2013-06-28 9 views
5

Mam dwie listy tablic o różnych rozmiarach. Jak zastąpić z tego:Jak zamienić jedną listę na inną o innym rozmiarze w 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)); 
     } 

Próbowałem obu tego. ale nie zastępuj tylko dołącz lub kopiuj z istniejącej listy tablic. Mój cel jest całkowicie zastąpić oryginalnej tablicy do nowej listy.

Odpowiedz

12

Można zrobić clear() a potem zrobić addAll(s);

Po clear() swojej ArrayList będzie pusta.

EDIT:

Jak skomentował @Luggi, clear() nie będzie dobrym rozwiązaniem, jeśli lista jest duża, zamiast po prostu podkreślić swoje odniesienie do nowej ArrayList f z kolekcji jako parametr: Przykład:

f = new ArrayList(s); 
+4

Lub jeszcze łatwiej: 'f = new ArrayList (s);'. Zwróć uwagę, że wyczyszczenie listy z dużą ilością elementów (np. 10k lub więcej) działa wolniej niż pozwala GC wykonywać swoją pracę. –

+0

@ LuiggiMendoza: Dobra uwaga. – kosa

2

enter link description hereenter link description here można to zrobić na wiele sposobów

  1. Pierwszy jasne następnie dodać wszystkie

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

  2. najpierw sposób Wszystkie elementy kopię z jednej listy do innej listy, jeśli chcesz, że zarówno lista są takie same i manipulacja w jednej liście odzwierciedla w innym liście, a następnie możesz wskazać obydwie na tej samej liście, na przykład:

    f = s;

  3. Wprowadzając nową listę, dodając wszystkie elementy do nowej listy.

    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); 

Jeśli chcesz dodać elementy f do s następuje zadziała

s.addAll(f); 

to wszystko. Dlaczego używasz pętli for w swoim kodzie?

0

Można to wypróbować:

Pierwszy dodać wszystkie elementy z s do f

f.addAll(s);

Następnie zachować tylko elementy w f które są obecne w s

f.retainAll(s);

Powiązane problemy