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

জাভাতে ArrayList কে রিড-অনলি (Read-Only) করার পদ্ধতি

java.util.Collections ক্লাসের unmodifiableList() মেথড একটি List ইন্টারফেস অবজেক্ট গ্রহণ করে এর একটি অনমোডিফাইবল (Unmodifiable/Read-only) ভিউ রিটার্ন করে। এই ভিউতে শুধু পড়ার অ্যাক্সেস থাকে, লেখার বা পরিবর্তনের নয়।

উদাহরণ: 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("Original: " + list);

        // ArrayList কে রিড-অনলি লিস্টে রূপান্তর
        List<String> myList = Collections.unmodifiableList(list);
        System.out.println("Read-only view: " + myList);
    }
}

আউটপুট

Original: [JavaFx, Java, WebGL, OpenCV]
Read-only view: [JavaFx, Java, WebGL, OpenCV]

মডিফাই করার চেষ্টা করলে রানটাইম এক্সেপশন

// ... previous code ...
myList.add("CoffeeScript"); // UnsupportedOperationException ফেলবে
System.out.println("Read-only view: " + myList);

এক্সেপশন

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
    at ArrayListReadOnly.main(ArrayListReadOnly.java:20)

গুরুত্বপূর্ণ পয়েন্ট:

  • এটি মূল লিস্টের একটি ভিউ (View), কপি নয়। মূল লিস্ট মডিফাই করলে ভিউতে প্রতিফলিত হবে।
  • ইটারেটর দিয়েও মডিফাই করা যায় না (iterator.remove() করলেও এক্সেপশন)।
  • Java 10+ এ List.copyOf(list) ব্যবহার করে আসলেই ইমিউটেবল কপি তৈরি করা যায় (ভিউ নয়, স্বতন্ত্র কপি)।
  1. Java-এ MySQL টেবিল থেকে ArrayList-এ ডেটা লোড করা

  2. জাভাতে ডাইরেক্টরি থেকে শুধু ফাইল লিস্ট করা

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

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