2011-10-06 38 views
15

arraylist<interface> Bu listeye bir for döngüsündeki nesneler eklenir. Bu arraylistin, yöntem çağrıldığında her zaman boş olmasını isterim.Java: Nasıl bir arraylist sıfırlanır

Burada boşaltmak istiyorum dizi suggestedPhrases: İşte

kodudur. Dizi sizin yöntemine çağrıları arasında devam ederse (bu sınıfın bir üyesi olup olmadığını mesela)

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

ArrayList için API belgesini okumaya ne dersiniz? http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html –

+3

-1 Dostum, API'ya bakmanın nesi zor? – mre

+0

^^ yolu çok fazla bilgi var – EI756

cevap

34

, bunu temizlemek için suggestedPhrases.clear() çağırabilir. sizin örnekten

orada çağrıları arasında suggestedPhrases devam için herhangi bir ihtiyaç görünmüyor, bu yüzden basitçe yöntemi denir her zaman yeni bir dizi listesi oluşturmak (ve dönüş) olabilir:

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

Bunu yaptım ve bir JUnit testinde boş bir işaretçi istisnası alıyorum – EI756

+0

Sınıfınızın hangi satırında istisna meydana geldiğini gösteren istisna mesajını okumaya ne dersiniz? –

+2

Ve sonra yöntem adı aslında işlevin ne olduğunu yansıtabilir! – cwallenpoole

6

You clear yöntemini çağırabilir, ancak normal olarak var olanı yeniden kullanmak yerine yeni bir örnek oluşturmayı tercih ederim. Günümüz JVM'leri, nesne yeniden tahsisini oldukça iyi bir şekilde ele alabileceğinden, ek yük önemsizdir (gerçekten performans açısından kritik bölümler hariç).

+0

Arama sırasında yeni bir örnek oluşturmanın herhangi bir avantajı var mı? –

+0

Bakın: http://stackoverflow.com/a/18371813/821202 – michael667

+0

Harika! Teşekkürler. –