কম্পিউটার টিউটোরিয়াল

জাভায় List.replaceAll(UnaryOperator) মেথড উদাহরণসহ


List.replaceAll() মেথড

জাভা ৮ থেকে `List` ইন্টারফেসে `replaceAll(UnaryOperator<E> operator)` মেথড যোগ হয়েছে। এটি লিস্টের প্রতিটি এলিমেন্টে `UnaryOperator` অপারেশন প্রয়োগ করে এবং আপডেট করে (ইন-প্লেস মডিফিকেশন)।

UnaryOperator ইন্টারফেস

`java.util.function.UnaryOperator` — `Function`-এর সাব-ইন্টারফেস। একই টাইপের ইনপুট নেয় এবং একই টাইপের আউটপুট দেয়। ল্যাম্বডা এক্সপ্রেশন বা মেথড রেফারেন্স হিসেবে ব্যবহার করা যায়।

কোড উদাহরণ: কাস্টম UnaryOperator ইমপ্লিমেন্টেশন

import java.util.ArrayList;
import java.util.function.UnaryOperator;

class Op implements UnaryOperator<String> {
    @Override
    public String apply(String str) {
        return str.toUpperCase(); // আপারকেসে রূপান্তর
    }
}

public class ListReplaceAllExample {
    public static void main(String[] args) throws CloneNotSupportedException {
        ArrayList<String> list = new ArrayList<>();
        list.add("Java");
        list.add("JavaScript");
        list.add("CoffeeScript");
        list.add("HBase");
        list.add("OpenNLP");
        
        System.out.println("লিস্টের কন্টেন্ট: " + list);
        
        // replaceAll() কল
        list.replaceAll(new Op());
        
        System.out.println("রিপ্লেস অপারেশন کے بعد লিস্ট:\n" + list);
    }
}

আউটপুট

লিস্টের কন্টেন্ট: [Java, JavaScript, CoffeeScript, HBase, OpenNLP]
রিপ্লেস অপারেশন کے بعد লিস্ট:
[JAVA, JAVASCRIPT, COFFEESCRIPT, HBASE, OPENNLP]

ল্যাম্বডা এক্সপ্রেশন ব্যবহার (সংক্ষিপ্ত)

// কাস্টম ক্লাস ছাড়া ল্যাম্বডা দিয়ে
list.replaceAll(s -> s.toUpperCase());

// বা মেথড রেফারেন্স
list.replaceAll(String::toUpperCase);

Collections.replaceAll() vs List.replaceAll()

বিষয়Collections.replaceAll()List.replaceAll()
সিগনেচারreplaceAll(List, oldVal, newVal)replaceAll(UnaryOperator)
কাজনির্দিষ্ট ভ্যালু রিপ্লেসপ্রতিটি এলিমেন্টে অপারেশন প্রয়োগ
ফ্লেক্সিবিলিটিসিম্পল রিপ্লেসমেন্টযেকোনো ট্রান্সফরমেশন
রিটার্ন টাইপboolean (রিপ্লেস হয়েছে কিনা)void (ইন-প্লেস)

সারসংক্ষেপ

`List.replaceAll(UnaryOperator)` জাভা ৮+ এ লিস্ট এলিমেন্টস ইন-প্লেস ট্রান্সফর্ম করার মডার্ন, ফাংশনাল উপায়। ল্যাম্বডা এক্সপ্রেশন (`s -> s.toUpperCase()`) বা মেথড রেফারেন্স (`String::toUpperCase`) দিয়ে খুব সংক্ষিপ্ত কোডে পাওয়ারফুল ট্রান্সফরমেশন করা যায়।

  1. জাভাতে জেনেরিক কালেকশন ব্যবহারের গুরুত্ব

  2. জাভাতে ArrayList সিঙ্ক্রোনাইজ করার কতগুলো পদ্ধতি আছে?

  3. জাভা ৮-এ ইন্টারফেস এনহ্যান্সমেন্ট

  4. জাভা গাইড: লিস্ট কে অ্যারেতে কনভার্ট করা (এবং আবার ফিরিয়ে আনা) toArray() এবং Arrays.asList() দিয়ে