0

ArrayList をソートするこの正しい方法はありますか? 問題は、リストがソートされていないことです。

out = new StringTokenizer(input.toString());
n = (out.countTokens());
for (int i = 0; i < n; i++) {
    String[] words = { out.nextToken().toString() };
    final List<String> wordList = Arrays.asList(words);
    Collections.sort(wordList);
    System.out.println(wordList.toString());
}
4

2 に答える 2

3

words[]配列は、StringTokenizer の次のトークンから取得された単一の文字列で構成されます。そして、トークン化の正確な順序で繰り返しています。そうです、出力はソートされません。私はあなたがこのようなことをしたいと思ったと思います:

out = new StringTokenizer(input.toString());
int count = out.countTokens():
List<String> wordList = new ArrayList<String>(count);
for(int i = 0; i < count; i++) {
    wordList.add(out.nextToken());
}
Collections.sort(wordList);

ただし、レガシーであるトークナイザー クラスは使用しないでください。次のコードは、より適切に機能します。

List<String> wordList = Arrays.asList(input.split("\\s"));
Collections.sort(wordList);
于 2013-04-07T13:10:07.057 に答える
0

out.nextToken().toString()1 つの文字列を指定します。配列の長さは 1 である必要があります。これをループに入れても、ループごとにソートするので、ループ外でソートする必要があります。

StringTokenizer out = new StringTokenizer( input.toString());
List<String> wordList = new ArrayList< String >();
while( out.hasMoreTokens()) {
    wordList.add( out.nextToken());
}
Collections.sort( wordList );
System.out.println(wordList.toString());
于 2013-04-07T13:09:12.590 に答える