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