为什么我的arrayList只添加了StringTokenizer的最后一个令牌?

msq*_*qar 2 java token tokenize

我做了这个代码

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;
}
Run Code Online (Sandbox Code Playgroud)

Sysout正确地显示每个令牌,但是当我然后迭代arrayList或检查它的大小时,说1(应该是2)并且仅显示添加的最新令牌.

为什么会这样?

谢谢.

Roh*_*ain 7

您正在ArrayListfor循环的每次迭代中创建一个新的.

移动以下语句:

tokens = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

在for循环之外.或者只是tokens在声明的地方初始化,而不是初始化它null.