2

このコードを作りました

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 の場合) と表示され、追加された最新のトークンのみが表示されます。

なぜこうなった???

ありがとう。

4

1 に答える 1

7

ArrayListfor ループの反復ごとに新しいものを作成しています。

次のステートメントを移動します。

tokens = new ArrayList<String>();

for ループの外側。tokensまたは、 を に初期化するのではなく、宣言の場所で単に初期化しnullます。

于 2013-07-18T20:33:03.413 に答える