সিডি বলতে গেলে, জাভাতে আপনি সরাসরি অ্যারের এলিমেন্টগুলো ইমিউটেবল করতে পারবেন না। অ্যারে জাভাতে মিউটেবল (Mutable) ডেটা স্ট্রাকচার।
তবে java.util.Collections ক্লাসের unmodifiableList() মেথড ব্যবহার করে একটি লিস্টকে অনমোডিফাইবল (Unmodifiable/Read-only) করা যায়। আর Arrays.asList() মেথড ব্যবহার করে অ্যারেকে লিস্টে রূপান্তর করা যায়। এই দুটি মেথড কম্বাইন করে অ্যারেকে কার্যকরভাবে ইমিউটেবল করা যায়।
পদ্ধতি
- ঐচ্ছিক অ্যারে তৈরি করুন।
Arrays.asList()ব্যবহার করে এটিকে লিস্ট অবজেক্টে রূপান্তর করুন।Collections.unmodifiableList()মেথডে লিস্টটি পাস করে অনমোডিফাইবল লিস্ট পান।
উদাহরণ
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class UnmodifiableExample {
public static void main(String args[]) {
// স্ট্রিং অ্যারে তৈরি
String strArray[] = {"Raju", "Rama", "Rahman", "Rachel", "Ranbhir", "Rangan"};
// অ্যারেকে লিস্টে রূপান্তর
List<String> list = Arrays.asList(strArray);
// লিস্টকে ইমিউটেবল/অনমোডিফাইবল করা
List<String> immutable = Collections.unmodifiableList(list);
System.out.println(immutable);
// মডিফাই করার চেষ্টা করলে এক্সেপশন
immutable.add("komala"); // UnsupportedOperationException
}
}
আউটপুট
[Raju, Rama, Rahman, Rachel, Ranbhir, Rangan]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
at UnmodifiableExample.main(UnmodifiableExample.java:19)
দ্রষ্টব্য: এটি অ্যারেকে সরাসরি ইমিউটেবল করে না, বরং এর একটি রিড-অনলি লিস্ট ভিউ তৈরি করে। মূল অ্যারেটি এখনও মিউটেবল থাকে। যদি আপনাকে আসলেই ইমিউটেবল ডেটা স্ট্রাকচার দরকার হয়, তবে List.of() (Java 9+) বা 써드-পার্টি লাইব্রেরি (যেমন Guava's ImmutableList) ব্যবহার করুন।