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 - Android 找不到 View

java - Spring Boot Kafka 客户端是否有 "Circuit Breaker"?

python - 根据编号键对字典进行排序

java - 在不实例化子类的情况下在父类(super class)和子类之间进行等效测试

c# - 如何展平数组数组?

python - 在 Python 中重新格式化制表符分隔的数据

arrays - 为什么我的 Ruby `for` 循环的效果没有持续存在?

algorithm - 归并排序执行速度很慢

node.js - MongoDB如何处理海量群聊消息?

java - 如何在数组:中查找包含相等总和的子集