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。即使你把它放到一个循环中,你在每个循环中排序,你必须在循环外排序。

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 回答