2013-07-18 2 views
2

나는왜 ArrayList가 StringTokenizer의 마지막 토큰 만 추가하고 있습니까?

private static List<String> rebuildURLWithComplexValues(String url) { 

List<String> tokens = null; 

if(url != null && url.length() > 0) { 
    if(url.contains("flowVars")) {    
     String[] firstSplit = url.split("\\["); 
     for (int i = 0; i < firstSplit.length; i++) { 
      if(firstSplit[i].contains("'")) { 
       StringTokenizer st = new StringTokenizer(firstSplit[i], "\'"); 
       tokens = new ArrayList<String>(); 
       String token = st.nextToken(); 
       System.out.println(token); 
       tokens.add(token); 
      } 
     } 

     return tokens; 
    } 
} 
return null; 
} 

SYSOUT가 제대로 각 토큰을 보여줍니다이 코드를했다,하지만 난 다음의 ArrayList를 반복하거나 크기를 검사 할 때, 1 (시 2이어야 함)라고하고 최신 토큰이 추가 보여줍니다.

왜 이런 일이 발생합니까 ???

감사합니다.

답변

7

for 루프의 각 반복마다 ArrayList을 새로 만듭니다. 루프의 외부

tokens = new ArrayList<String>(); 

:

는 다음과 같은 성명을 이동

. 또는 간단하게 null으로 초기화하는 대신 선언 위치에 tokens을 초기화하십시오.

+0

do'h omg 그것을 보지 못했지만,이 순간에 나의 뇌가 타오른다. 감사합니다. lol – msqar

+0

@msqar. 답변을 수락 된 것으로 표시해야합니다. –

관련 문제