2013-07-09 9 views
6

सूची में क्यों मैं तत्व को Arrays.asListजोड़ना तत्वों जावा

List<Integer> sam = Arrays.asList(1,2,3,4); 
sam.add(5); 

for (Integer integer : sam) 
{ 
    System.out.println(integer); 
} 
+1

http://stackoverflow.com/questions/4792160/arrays-aslist-doubt इससे आपको यह समझने के लिए आप क्या कर रहे मदद मिलेगी । – Mueretee

उत्तर

11

Arrays.asList(1,2,3,4) एक सरणी जिसका आकार को बदल नहीं सकते पर एक "सूची दृश्य" बनाता है। इस तरह हम List इंटरफ़ेस के माध्यम से किसी सरणी का उपयोग और उपयोग कर सकते हैं।

आप जिसमें आप मान जोड़ सकते हैं, लेकिन अभी भी सुविधाजनक Arrays.asList(..) का उपयोग एक सूची चाहते हैं, बस कार्य करें:

List<Integer> sam = new ArrayList<>(Arrays.asList(1,2,3,4)); 
+0

क्या यह है कि सूची दृश्य प्राप्त करके, हम एक सूची में जैसे ऑपरेशन कर सकते हैं? –

+0

हां। 'सूची' इंटरफ़ेस से सभी विधियां उपलब्ध हैं लेकिन कुछ की सीमाएं हैं: जैसे' add' काम नहीं करेगा - क्योंकि यह अभी भी एक सरणी है। –

6

Arrays.asList एक निश्चित-आकार सूची रिटर्न से मान निर्दिष्ट करने के बाद सूची में शामिल करने में असमर्थ हूँ। इस सूची के तत्वों को जोड़ने या हटाने की अनुमति नहीं है, हालांकि यह संभव है कि set विधि का उपयोग करके इस सूची के अंदर तत्वों को संशोधित करें।

public static <T> List<T> asList(T... a) { 
    return new ArrayList<T>(a); // this is not java.util.ArrayList 
} 

private static class ArrayList<E> extends AbstractList<E> 
    implements RandomAccess, java.io.Serializable { 
    ArrayList(E[] array) { 
     if (array==null) 
      throw new NullPointerException(); 
     a = array; 
    } 

    public E set(int index, E element) { 
     E oldValue = a[index]; 
     a[index] = element; 
     return oldValue;    
    } 

    // add() and remove() methods are inherited from AbstractList 
} 

public abstract class AbstractList<E> extends AbstractCollection<E> 
    implements List<E> { 

    public E remove(int index) { 
     throw new UnsupportedOperationException(); 
    } 
    public void add(int index, E element) { 
     throw new UnsupportedOperationException(); 
    } 
} 
2

As per docs

एक निश्चित-आकार सूची निर्दिष्ट द्वारा समर्थित रिटर्न सरणी। (लौटाई गई सूची में परिवर्तन "सरणी के माध्यम से" लिखें।) यह विधि संग्रह -toArray() के संयोजन में सरणी-आधारित और संग्रह-आधारित API के बीच पुल के रूप में कार्य करती है। लौटाई गई सूची क्रमबद्ध है और RandomAccess लागू करता है।

तो आपके द्वारा बनाए गए के बाद आप इसमें तत्व नहीं जोड़ सकते हैं।

0

asList(T... a) निर्दिष्ट सरणी द्वारा समर्थित एक निश्चित आकार की सूची देता है।

List<Integer> sam = new ArrayList<Integer>(); 
sam.addAll(Arrays.asList(1,2,3,4)); 
sam.add(5); 

for (Integer integer : sam) 
{ 
    System.out.println(integer); 
} 
0

विधि के प्रलेखन में देख रहे हैं:

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList(T...)

विधि Arrays.asList एक निश्चित-आकार सूची दृश्य लौट आए, तो आप सूची का उपयोग कर तत्वों नहीं जोड़ सकते।

वैसे भी, एक ही सवाल का जवाब यहां है:

Arrays.asList() doubt?

संबंधित मुद्दे