【问题标题】:Why my arrayList is only adding the last token from StringTokenizer?为什么我的 arrayList 只添加来自 StringTokenizer 的最后一个令牌?
【发布时间】:2013-07-18 20:31:49
【问题描述】:

我编写了这段代码

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)并且仅显示添加的最新标记。

为什么会这样???

谢谢。

【问题讨论】:

    标签: java token tokenize


    【解决方案1】:

    您将在 for 循环的每次迭代中创建一个新的 ArrayList

    移动以下语句:

    tokens = new ArrayList<String>();
    

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

    【讨论】:

    • do'h omg 没看过,我的脑子被这一刻烧坏了xd谢谢lol
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多