2011-10-06 17 views
15

Tengo arraylist<interface> Los objetos se agregan a esta lista en un ciclo for. Me gustaría que esta lista de arrays esté vacía cada vez que se llame al método.Java: cómo restablecer una lista de arrays para que esté vacía

Aquí está el código:

La matriz quiero vaciar aquí es 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

¿Qué le parece leer el api doc para ArrayList? http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html –

+3

-1 Amigo, ¿qué tiene de difícil mirar la API? – mre

+0

^^ camino a mucha información allí – EI756

Respuesta

34

Si la matriz se mantendrá en todas las llamadas a su método (por ejemplo, si es un miembro de la clase), puede llamar suggestedPhrases.clear() para desactivarla.

de su ejemplo que hay no parece haber ninguna necesidad de persistir suggestedPhrases través de llamadas, por lo que puede crear simplemente (y volver) una nueva lista de arreglo cada vez que su método se llama:

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

lo hice y obtengo una excepción de puntero nulo en una prueba JUnit – EI756

+0

¿Qué le parece leer el mensaje de la excepción, que indica en qué línea de su clase ocurre la excepción? –

+2

¡Y entonces el nombre del método podría reflejar realmente lo que hace la función! – cwallenpoole

6

Usted puede llamar al método clear, pero normalmente prefiero crear una nueva instancia en lugar de volver a usar una existente. La sobrecarga es insignificante (a excepción de realmente secciones de rendimiento crítico) ya que las JVM de hoy pueden manejar bastante bien la reasignación de objetos.

+0

¿Alguna ventaja de crear una instancia nueva sobre la llamada clara? –

+0

Vea aquí: http://stackoverflow.com/a/18371813/821202 – michael667

+0

¡Impresionante! Gracias. –

Cuestiones relacionadas