• 0

كيف يمكن عمل ArrayList للقراءة فقط read only في جافا؟

لدي في تطبيق جافا مجموعة من القوائم ArrayList أقوم بتخزين عناصر فيها كيف يمكنني تعطيل عمليات add() , remove() and set() على القوائم؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يمكن عمل مصفوفة ArrayList أن تكون للقراءة فقط باستخدام الدالة:

Collections.unmodifiableCollection()

والتي ترجع متغير غير قابل للتعديل readonly view of Collection أي لا تستطيع أن تقوم بتنفيذ أي عملية تعمل على تغيير المجمع collection مثل عملية الإضافة add او الإزالة remove او التغيير set. وفي حال تطبيق أي تغيير على المصفوفة (collection) سيتم رمي استثناء:

UnsupportedOperationException

الطريقة الأكثر شيوعًا في إنشاء مصفوفة غير قابلة للتعديل هي باستخدام الدالة asList في الصف Arrays Class:

Arrays.asList(String{[])

والتي تُرجع قائمة List لا يُسمح عليها تطبيق عمليات الإضافة أو الإزالة.

سأعرض مثال عن كيفية جعل ArrayList تصبح مصفوفة أو قائمة للقراءة فقط read only، سأستخدم الدالة asList من الصف Arrays لإنشاء مصفوفة قائمة ArrayList ذات طول ثابت fixed length ومن ثم تغليفها أو تحويلها إلى تجميع غير قابل للتعديل unmodifiable collection لجعلها للقراءة فقط:

public static void main(String args[]) {
      
//creating read only Collection in Java

Collection readOnlyCollection = Collections.unmodifiableCollection(new ArrayList<String>());
 readOnlyCollection.add("Sydney Sheldon"); //raises UnSupportedOperation exception
    
        //making existing ArrayList readonly in Java
        ArrayList readableList = new ArrayList();
        readableList.add("Jeffrey Archer");
        readableList.add("Khalid Hussain");
      
        List unmodifiableList = Collections.unmodifiableList(readableList);
      
        //add will throw Exception because List is readonly
        unmodifiableList.add("R.K. Narayan");
      
        //remove is not allowed in unmodifiable list
        unmodifiableList.remove(0);
      
        //set is not allowed in unmodifiable List
        unmodifiableList.set(0, "Anurag Kashyap");
      
        //creating Fixed Length List from Array in Java
        List fixedLengthList = Arrays.asList("Mark" , "Twen");
        // readOnlyList.add("J.K. Rowling"); //raises Exception
      
        fixedLengthList.set(0, "J.K. Rowling"); //allowed that's why not read only list
        System.out.println(fixedLengthList.get(0));
    }
  

كيف يمكن عمل ArrayList للقراءة فقط read only في جافا؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن