java - 如何修复这种排序方法?

标签 java arrays sorting

这是按第二个字符对单词进行排序的排序方法,但它不起作用( 谁能说一下怎么解决吗?

out = new StringTokenizer(input.toString());
n = out.countTokens();
List<String> wordList = new ArrayList<String>(n);
for (int i = 0; i < n; i++) {
  wordList.add(out.nextToken());
}
Collections.sort(wordList, new Comparator<String>() {
  public int compare(String o1, String o2) {
    return compare(o1.substring(1, 2).compareTo(o2.substring(1, 2)));
  }
});

最佳答案

尝试使用这个:

Collections.sort(wordList, new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.substring(1, 2).compareTo(o2.substring(1, 2));
}

而不是这个:

Collections.sort(wordList, new Comparator<String>() {
  public int compare(String o1, String o2) {
    return compare(o1.substring(1, 2).compareTo(o2.substring(1, 2)));
  }

前者起作用的原因是 Comparator 类的比较函数从 Collection 中获取对象,并期望其中的操作产生 0 表示相等,当第一个参数“更大”时产生 1,当第二个参数是“时产生 -1”更大”。因此,在函数中,您抽象地定义了使一个对象比另一个对象更大/等于/小于另一个对象的原因。

干杯。

关于java - 如何修复这种排序方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863136/

相关文章:

java - map 的序列化

java - 检查用户是否至少输入了一个输入的最佳/最有效方法

python - 首选排序并将 1D 字节数组转换为 Numpy nd 数组?

arrays - 如何在 Perl 中有效地从引用的散列和键数组中获取值数组?

algorithm - 有人可以向我解释为什么插入排序的最坏情况是 O(n^2) 吗?

c++ - 用于对包含指向自定义类对象的指针的 vector 进行排序的比较器

java - HHH000342 : Could not obtain connection to query metadata : Access denied for user

java - 从后台 worker 更新 UI

C# - 如何检查是否需要构造一个类型的对象?

java - java中的多重排序