2013-06-28 11 views
5

Ho due elenchi di array con dimensioni diverse. Come sostituire da questo:Come sostituire un arraylist con un altro con dimensioni diverse in java

ArrayList<String> s = new ArrayList<String>(); 
ArrayList<String> f = new ArrayList<String>(); 
     s.add("Nepal"); 
     s.add("Korea"); 
     s.add("Sri Lanka"); 
     s.add("India"); 
     s.add("Pakistan"); 
     s.add("China"); 
     s.add("Australia"); 
     s.add("Bhutan"); 

     f.add("London"); 
     f.add("New York"); 
     f.add("Mumbai"); 
     f.add("sydeny"); 
for(int i=0;i<s.size();i++){ 
      // Collections.copy(f, s); 
      f.addAll(s); 
      Log.d("TAG", "Sources---" + s.get(i)); 
      Log.d("TAG", "Dest---" + f.get(i)); 
     } 

Ho provato entrambi. ma non sostituire solo aggiungere o copiare dall'elenco di array esistente. Il mio obiettivo è di sostituire totalmente l'array originale al nuovo arraylist.

risposta

12

Si può fare clear() prima e poi fare addAll(s);

Dopo clear() tua arraylist sarà vuota.

EDIT:

Come ha commentato @Luggi, clear() non sarà buono opzione se la lista è grande, invece è sufficiente puntare il f riferimento alla nuova ArrayList con la collezione come parametro: Esempio:

f = new ArrayList(s); 
+4

O ancora più semplice: 'f = new ArrayList (s);'. Tieni presente che la cancellazione di un elenco con una grande quantità di elementi (ad esempio 10k o più) è più lenta che lasciare che il GC faccia il suo lavoro. –

+0

@LuiggiMendoza: buon punto. – kosa

2

enter link description hereenter link description here È possibile farlo in molti modi

  1. In primo luogo chiaro quindi aggiungere tutti

    f.clear();
    f.addAll(S);

  2. In primo modo tutta la copia elemento da una lista ad un'altra lista, se si desidera che sia la lista sono gli stessi e la manipolazione in una sola lista riflette in un altro elenco, allora puoi puntare entrambi sulla stessa lista come

    f = s;

  3. Intializzando la nuova lista aggiungendo tutto l'elemento in una nuova lista.

    f = new ArrayList(s);

1
ArrayList<String> s = new ArrayList<String>(); 
    ArrayList<String> f = new ArrayList<String>(); 

    s.add("Nepal"); 
    s.add("Korea"); 
    s.add("Sri Lanka"); 
    s.add("India"); 
    s.add("Pakistan"); 
    s.add("China"); 
    s.add("Australia"); 
    s.add("Bhutan"); 

    f.add("London"); 
    f.add("New York"); 
    f.add("Mumbai"); 
    f.add("sydeny"); 

    f.clear(); 
    f.addAll(s); 

Se si desidera aggiungere elementi in f a s proceda in questo modo

s.addAll(f); 

Questo è tutto. Perché usi il ciclo for nel tuo codice?

0

Si può provare questo fuori:

Prima aggiungere tutti gli elementi da s al f

f.addAll(s);

Poi mantenere solo gli elementi in f che sono presenti in s

f.retainAll(s);

Problemi correlati