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

জাভাতে কালেকশনকে রিড-অনলি (Read-Only) কীভাবে করবেন?

java.util.Collections ক্লাসে কালেকশনকে অনমোডিফাইবল (unmodifiable) বা রিড-অনলি করার জন্য unmodifiableXxx() মেথডগুলো রয়েছে। এই মেথডগুলো 본래 কালেকশনের একটি "ভিউ" (view) রিটার্ন করে যা শুধু পড়ার অনুমতি দেয়, লেখার বা পরিবর্তনের নয়।

প্রধান অনমোডিফাইবল মেথডসমূহ

ক্রমমেথড ও বর্ণনা
1static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
যেকোনো কালেকশন অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে।
2static <T> List<T> unmodifiableList(List<? extends T> list)
List অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে।
3static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
Map অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে।
4static <T> Set<T> unmodifiableSet(Set<? extends T> s)
Set অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে।
5static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)
SortedMap অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল ভিউ রিটার্ন করে।
6static <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 নিক্ষেপ হবে।

  1. জাভাতে JTextField-কে কেবল সংখ্যা গ্রহণ করার জন্য কীভাবে বাধ্য করবেন?

  2. Tkinter Text Widgetকে Read-Only বা ডিজেবল করা

  3. উইন্ডোজ ১১/১০-এ ফাইল বা ফোল্ডার হিডেন বা রিড-অনলি बनाने का উপায়

  4. জাভা POJO কে JSON-এ কনভার্ট করা: Jackson এবং Gson ব্যবহার করে