2010-03-10 16 views
44

जावा में पढ़ें, आप ArrayList केवल पढ़ने के लिए कैसे बना सकते हैं (ताकि कोई भी प्रारंभ करने के बाद तत्वों को जोड़, संपादित या हटा सके)?ऐरेलिस्ट को केवल

उत्तर

86

Collections.unmodifiableList() में ArrayList पास करें। यह निर्दिष्ट सूची का एक अपरिवर्तनीय दृश्य देता है। केवल इस लौटाई गई सूची का उपयोग करें, और कभी भी मूल ऐरेलिस्ट नहीं।

+28

"... और केवल लौटाई गई सूची का उपयोग करें, और कभी भी मूल 'ArrayList'' यहां एक बहुत ही महत्वपूर्ण जोड़ नहीं है! उस विधि में 'ArrayList' को पास करना ऑब्जेक्ट को जादुई रूप से परिवर्तित नहीं करता है। यह केवल एक अपरिवर्तनीय रैपर देता है। –

+0

@ जोचिम सॉर - महान बिंदु! –

+3

कभी-कभी आप मूल 'ArrayList' रखना चाहते हैं। किसी वस्तु के भीतर encapsulated डेटा के 'सूची' जैसे दृश्य को उजागर करने के लिए यह एक महान तकनीक हो सकती है। ऑब्जेक्ट में संशोधन 'सूची' दृश्य को अपडेट करेगा, लेकिन दृश्य स्वयं किसी भी संशोधन को स्वीकार नहीं करता है। – Matthew

0

क्या आप वाकई इस मामले में ArrayList का उपयोग करना चाहते हैं?

शायद पहले अपनी जानकारी के साथ ArrayList को पॉप्युलेट करना बेहतर होगा, और फिर जावा प्रोग्राम प्रारंभ होने पर ArrayList को अंतिम सरणी में परिवर्तित करना बेहतर होगा।

+0

HI Jama, मुझे संग्रह मिल गया .unmodifiableList() यह वैसे ही काम करेगा जिस तरह से मैं चाहता था। इस विधि को आजमाएं, इसकी सीधी आगे – gmhk

+0

अच्छी तरह से मैं ... यह कमाल है! – Jama22

2

संग्रह ऑब्जेक्ट को Collections.unmodifiableList() पर पास करें। नमूना उदाहरण के नीचे देखें।

import java.util.*; 

    public class CollDemo 
    { 
     public static void main(String[] argv) throws Exception 
    { 
      List stuff = Arrays.asList(new String[] { "a", "b" }); 
      List list = new ArrayList(stuff); 
      list = Collections.unmodifiableList(list); 
      Set set = new HashSet(stuff); 
      set = Collections.unmodifiableSet(set); 
      Map map = new HashMap(); 
      map = Collections.unmodifiableMap(map); 
      System.out.println("Collection is read-only now."); 
     } 
    } 
0

की इसके समकक्ष unmodifiable कार्य करने के लिए दर्रा संग्रह वस्तु संग्रह वर्ग कोड निम्नलिखित चलता unmodifiableList के उपयोग

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 


public class Temp { 

    public static void main(String[] args) { 

     List<Integer> objList = new ArrayList<Integer>(); 
     objList.add(4); 
     objList.add(5); 
     objList.add(6); 
     objList.add(7); 

     objList = Collections.unmodifiableList(objList); 
     System.out.println("List contents " + objList); 

     try { 
      objList.add(9); 
     } catch(UnsupportedOperationException e) { 
      e.printStackTrace(); 
      System.out.println("Exception occured"); 
     } 
     System.out.println("List contents " + objList); 
    } 

} 

उसी तरह आप अन्य संग्रह unmodifiable रूप में अच्छी तरह

  • संग्रह बना सकते हैं .unmodifiableMap (नक्शा);
  • संग्रह .unmodifiableSet (सेट);
संबंधित मुद्दे