2011-10-06 7 views
15

나는 arraylist<interface> 을 가지고 있습니다. for 루프에서이 목록에 객체가 추가됩니다. 메서드가 호출 될 때마다이 arraylist가 비어 있기를 바랍니다.자바 : arraylist가 비어 있도록 재설정하는 방법

여기 비우하려는 배열 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

ArrayList에 대한 API 문서를 읽는 방법은 어떻습니까? http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html –

+3

-1 야, API를 살펴보면 어떨까요? – mre

+0

많은 정보가있는 ^^ 방법입니다. – EI756

답변

34

, 당신은 그것을 취소 suggestedPhrases.clear()를 호출 할 수 있습니다. 귀하의 예제에서

가 전화를 통해 suggestedPhrases을 지속 할 필요로 표시되지 않습니다, 그래서 당신은 단순히 당신의 메소드가 호출 될 때마다 새로운 배열 목록을 만드는 (반환) 할 수 있습니다

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

나는 그랬고 JUnit 테스트에서 널 포인터 예외를 얻었습니다. – EI756

+0

클래스의 어느 행에서 예외가 발생했는지 나타내는 예외 메시지를 읽는 방법은 어떻습니까? –

+2

그리고 메소드 이름은 실제로 함수가하는 것을 반영 할 것입니다! – cwallenpoole

6

당신에게 clear 메서드를 호출 할 수 있지만 일반적으로 기존 인스턴스를 다시 사용하는 대신 새 인스턴스를 만드는 것이 더 좋습니다. 오버 헤드는 무시할 수 있습니다 (실제적으로 성과 핵심 섹션 제외). 오늘날의 JVM이 오브젝트 재 할당을 아주 잘 처리 할 수 ​​있기 때문입니다.

+0

전화를 통해 새 인스턴스를 만드는 이점은 무엇입니까? –

+0

여기를 참조하십시오 : http://stackoverflow.com/a/18371813/821202 – michael667

+0

굉장! 감사. –

관련 문제