Java 这是正确的排序方法吗?

Java 这是正确的排序方法吗?,java,arrays,sorting,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);

这是排序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());
}
out=newStringTokenizer(input.toString());
n=(out.countTokens());
对于(int i=0;i
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());
StringTokenizer out=新的StringTokenizer(input.toString());
List wordList=newarraylist();
while(out.hasMoreTokens()){
add(out.nextToken());
}
Collections.sort(wordList);
System.out.println(wordList.toString());
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());
StringTokenizer out=新的StringTokenizer(input.toString());
List wordList=newarraylist();
while(out.hasMoreTokens()){
add(out.nextToken());
}
Collections.sort(wordList);
System.out.println(wordList.toString());

每个
单词[]
数组都由一个字符串组成,该字符串从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);
out=newStringTokenizer(input.toString());
int count=out.countTokens():
List wordList=newarraylist(count);
for(int i=0;i
但是不要使用标记器类,它的遗留类。以下代码将更好地为您服务:

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

每个
单词[]
数组都由一个字符串组成,该字符串从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);
out=newStringTokenizer(input.toString());
int count=out.countTokens():
List wordList=newarraylist(count);
for(int i=0;i
但是不要使用标记器类,它的遗留类。以下代码将更好地为您服务:

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

为什么不将排序移到循环外?@Maroun Maroun By alphabyte为什么不将排序移到循环外?@Maroun Maroun By alphabyte你能告诉我,如何修复它吗?@antoxa2584-我正在编辑一些代码。请参阅更新的答案。如果我需要按第二个字符对其进行排序,例如,如何进行排序?这将是一种自定义排序-您需要使用逻辑创建一个比较器,并在
集合中使用它。排序(wordList,myCustomComparator)
。我尝试了这个方法,但它在
集合中根本不起作用。排序(wordList,new Comparator()){公共int比较(字符串o1,字符串o2){返回比较(Character.toString(o1.charAt(1)),Character.toString(o2.charAt(1));});
你能告诉我,如何修复它吗?@antoxa2584-我在编辑一些代码。请参阅更新的答案。如果我需要按第二个字符排序,例如,如何进行排序?这将是一个自定义排序-您需要创建一个带有逻辑的比较器,并在
集合中使用它。排序(wordList,myCustomComparator)
。我尝试了这个方法,但它在所有集合.sort(单词列表,新比较器(){public int compare(String o1,String o2){return compare(Character.toString(o1.charAt(1)),Character.toString(o2.charAt(1));}}上都不起作用。