java.util.Collections ক্লাসে কালেকশনকে অনমোডিফাইবল (unmodifiable) বা রিড-অনলি করার জন্য unmodifiableXxx() মেথডগুলো রয়েছে। এই মেথডগুলো 본래 কালেকশনের একটি "ভিউ" (view) রিটার্ন করে যা শুধু পড়ার অনুমতি দেয়, লেখার বা পরিবর্তনের নয়।
প্রধান অনমোডিফাইবল মেথডসমূহ
| ক্রম | মেথড ও বর্ণনা |
|---|---|
| 1 | static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) যেকোনো কালেকশন অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে। |
| 2 | static <T> List<T> unmodifiableList(List<? extends T> list) List অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে। |
| 3 | static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) Map অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে। |
| 4 | static <T> Set<T> unmodifiableSet(Set<? extends T> s) Set অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে। |
| 5 | static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m) SortedMap অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে। |
| 6 | static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) SortedSet অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে। |
উদাহরণ: ArrayList কে রিড-অনলি করা
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListReadOnly {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("JavaFx");
list.add("Java");
list.add("WebGL");
list.add("OpenCV");
System.out.println(list);
// ArrayList কে রিড-অনলি লিস্টে রূপান্তর
List<String> myList = Collections.unmodifiableList(list);
System.out.println("Array list converted to read only " + myList);
}
}
আউটপুট
[JavaFx, Java, WebGL, OpenCV] Array list converted to read only [JavaFx, Java, WebGL, OpenCV]
রানটাইম এক্সেপশন (যদি মডিফাই করার চেষ্টা করা হয়)
// ... previous code ...
myList.add("CoffeeScript"); // UnsupportedOperationException ফেলবে
System.out.println("Array list converted to read only " + myList);
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
at ArrayListReadOnly.main(ArrayListReadOnly.java:20)
গুরুত্বপূর্ণ: একবার অনমোডিফাইবল ভিউ পাওয়ার পর আপনি সরাসরি বা ইটারেটর ব্যবহার করে সেটিতে কোনো এলিমেন্ট যোগ, মুছে ফেলা বা পরিবর্তন করতে পারবেন না। এমন চেষ্টা করলে UnsupportedOperationException নিক্ষেপ হবে।