اذهب إلى المحتوى

السؤال

Recommended Posts

  • 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 في جافا؟

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...