2011-10-06 16 views
15

Mam arraylist<interface> Obiekty dodawane do tej listy w pętli for. Chciałbym, aby ta lista była pusta za każdym razem, gdy wywoływana jest metoda.Java: Jak zresetować listę tablic tak, aby była pusta

Oto kod:

Tablica Chcę opróżnić tutaj jest suggestedPhrases.

public List<Interface> returnSuggestedList(String prefix) { 

    String tempPrefix = prefix; 


    // suggestedPhrases = null; 
    //suggestedPhrases = new ArrayList<Interface>(); 
    //Vector<String> list = new Vector<String>(); 

    //List<Interface> interfaceList = new ArrayList<Interface>(); 
    Collections.sort(wordsList); 
    System.out.println("Sorted Vector contains : " + wordsList); 
    int i = 0; 

    //List<String> selected = new ArrayList<String>(); 
    for(String w:wordsList){ 
     System.out.println(w); 
     if(w.startsWith(prefix.toLowerCase())) { // or .contains(), depending on 
      //selected.add(w);  // what you want exactly 
     Item itemInt = new Item(w); 
     suggestedPhrases.add(itemInt); 
    } 
} 
+3

Co powiesz na czytanie api doc dla ArrayList? http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html –

+3

-1 Koleś, o co tak trudno patrzeć na API? – mre

+0

^^ sposób na wiele informacji tam – EI756

Odpowiedz

34

Jeśli tablica utrzymuje się w poprzek połączeń do swojej metody (np jeśli jest członkiem klasy), można nazwać suggestedPhrases.clear() aby je wyczyścić.

ze swojego przykład tam nie wydaje się być jakaś potrzeba utrzymują suggestedPhrases całej rozmowy, więc może po prostu tworzyć (i powrót) nową listę tablicy każdym razem, gdy wywoływana jest metoda:

public List<Interface> returnSuggestedList(String prefix) { 
    ArrayList<Interface> suggestedPhrases = new ArrayList<Interface>(); 
    // populate suggestedPhrases here 
    return suggestedPhrases; 
} 
+1

Zrobiłem to i otrzymałem wyjątek wskaźnika pustego w teście JUnit – EI756

+0

Co powiesz na przeczytanie komunikatu wyjątku, który wskazuje, w którym wierszu klasy występuje wyjątek? –

+2

A następnie nazwa metody może faktycznie odzwierciedlać to, co funkcja ma! – cwallenpoole

6

You można wywołać metodę clear, ale zazwyczaj wolę tworzyć nową instancję zamiast ponownie używać istniejącej. Narzut jest nieznaczny (z wyjątkiem naprawdę sekcji krytycznych pod względem wydajności), ponieważ dzisiejsze maszyny JVM radzą sobie całkiem dobrze z ponownym przydzielaniem obiektów.

+0

Dowolna zaleta tworzenia nowej instancji przez wywołanie clear? –

+0

Zobacz tutaj: http://stackoverflow.com/a/18371813/821202 – michael667

+0

Awesome! Dzięki. –

Powiązane problemy