这是正确的排序方法吗?

时间:2013-04-07 13:07:25

标签: java arrays sorting

这是对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());
}

2 个答案:

答案 0 :(得分: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);

,请勿使用其遗留的tokenizer类。以下代码将为您提供更好的服务:

List<String> wordList = Arrays.asList(input.split("\\s"));
Collections.sort(wordList);

答案 1 :(得分: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());