1

これは、単語を2番目の文字でソートするためのソート方法であり、機能しません(誰かがそれを修正する方法を教えてもらえますか?

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、2 番目のパラメーターが「より大きい」場合は -1 を生成することを期待するためです。したがって、関数では、あるオブジェクトを別のオブジェクトよりも大きく/等しく/小さくするものを抽象的に定義します。

乾杯。

于 2013-04-07T13:55:34.943 に答える