2012-12-24 18 views
30

मेरे पास बराबर आकार के दो ArrayList एस हैं। सूची 1 में 10 नाम होते हैं और सूची 2 में उनके फोन नंबर होते हैं।दो ArrayLists को कैसे सम्मिलित करें?

मैं नाम और संख्या को ArrayList में जोड़ना चाहता हूं। मैं यह कैसे करु?

+0

वास्तव में क्या आप concat द्वारा मतलब है? एक नई सूची बनाएं जिसमें 10 तत्व हैं जिनमें नाम और संख्या है? – Henry

+0

मैं नई ऐरेलिस्ट में एक स्ट्रिंग चाहता हूं जिसमें नाम और संख्या दोनों हों। – Anirudh

उत्तर

60

आप को .addAll() उपयोग कर सकते हैं दूसरी सूची के तत्वों को पहले जोड़ें:

array1.addAll(array2); 

संपादित करें: उपरोक्त आपके स्पष्टीकरण के आधार पर ("मैं नई ऐरेलिस्ट में एक स्ट्रिंग चाहता हूं जिसमें नाम और संख्या दोनों हों। "), आप पहली सूची के माध्यम से लूप करना चाहते हैं और यह करने के लिए दूसरी सूची से आइटम संलग्न करेंगे

कुछ इस तरह:।

array1 : ["a", "b", "c"] 
array2 : ["1", "2", "3"] 
:

int length = array1.size(); 
if (length != array2.size()) { // Too many names, or too many numbers 
    // Fail 
} 
ArrayList<String> array3 = new ArrayList<String>(length); // Make a new list 
for (int i = 0; i < length; i++) { // Loop through every name/phone number combo 
    array3.add(array1.get(i) + " " + array2.get(i)); // Concat the two, and add it 
} 

यदि आप में डाल

आप मिल जाएगा:

array3 : ["a 1", "b 2", "c 3"] 
+2

आप 'array3' का आकार निर्दिष्ट करना चाहते हैं। यानी 'नया ऐरेलिस्ट (array1.size()) '। इसके अलावा यह 'आकार() '' 'लंबाई नहीं है()'। – arshajii

14

के रूप में दूसरे ArrayList करने के लिए एक ArrayList जोड़ें:

Arraylist1.addAll(Arraylist2); 

संपादित करें: आप दो से नए ArrayList बनाने के लिए मौजूदा ArrayList तो के रूप में क्या चाहते हैं:

ArrayList<String> arraylist3=new ArrayList<String>(); 

arraylist3.addAll(Arraylist1); // add first arraylist 

arraylist3.addAll(Arraylist2); // add Second arraylist 
+0

नामों के बाद संख्याएं प्रदर्शित की जा रही हैं, मैं एक-दूसरे के बगल में नाम और संख्या चाहता हूं। क्या तुम कृप्या मेरी मदद कर सकते हो। – Anirudh

+0

@anirudhmaddy: ठीक है आप एक ही इंडेक्स पर नई सरणी सूची में दोनों नाम + संख्या चाहते हैं? –

2
ArrayList<String> resultList = new ArrayList<String>(); 
resultList.addAll(arrayList1); 
resultList.addAll(arrayList2); 
2

एक ArrayList1 डेटा के लिए जोड़,

mArrayList1.add(data); 

और दूसरा ArrayList2 अन्य डेटा जोड़ने के लिए,

mArrayList2.addAll(mArrayList1); 
0
var arr3 = new arraylist(); 
for(int i=0, j=0, k=0; i<arr1.size()+arr2.size(); i++){ 
    if(i&1) 
     arr3.add(arr1[j++]); 
    else 
     arr3.add(arr2[k++]); 
} 

के रूप में आप कहते हैं, "नाम और नंबर एक दूसरे को बगल में"। यहां कार्यान्वयन

List<Object> mergedList = new ConcatList<>(list1, list2); 

:

2
एक हल्के सूची है कि प्रविष्टियों की नकल नहीं करता है के लिए

, तो आप इस तरह sth उपयोग कर सकते हैं

public class ConcatList<E> extends AbstractList<E> { 

    private final List<E> list1; 
    private final List<E> list2; 

    public ConcatList(final List<E> list1, final List<E> list2) { 
     this.list1 = list1; 
     this.list2 = list2; 
    } 

    @Override 
    public E get(final int index) { 
     return getList(index).get(getListIndex(index)); 
    } 

    @Override 
    public E set(final int index, final E element) { 
     return getList(index).set(getListIndex(index), element); 
    } 

    @Override 
    public void add(final int index, final E element) { 
     getList(index).add(getListIndex(index), element); 
    } 

    @Override 
    public E remove(final int index) { 
     return getList(index).remove(getListIndex(index)); 
    } 

    @Override 
    public int size() { 
     return list1.size() + list2.size(); 
    } 

    @Override 
    public void clear() { 
     list1.clear(); 
     list2.clear(); 
    } 

    private int getListIndex(final int index) { 
     final int size1 = list1.size(); 
     return index >= size1 ? index - size1 : index; 
    } 

    private List<E> getList(final int index) { 
     return index >= list1.size() ? list2 : list1; 
    } 

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