1

这是按第二个字符对单词进行排序的排序方法,它不起作用(有人能说如何解决吗?

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)));
  }
});
4

1 回答 1

0

尝试使用这个:

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。因此,在函数中,您抽象地定义了使一个对象大于/等于/小于另一个对象的原因。

干杯。

于 2013-04-07T13:55:34.943 回答