私はjavaを初めて利用しています。私は最初の文字に基づいて与えられたペアをソートするコードを書いています。私はCollections.sort()
を使用してペアをソートしていますが、どういうわけかソートされていません。私は問題の原因を突き止めることができません。以下のコードを確認してください。ありがとう。なぜCollections.sort()が機能していないのですか?
package main.java.practice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StringChain {
public static void main(String[] args) {
List<Pair> arr = new ArrayList<>();
arr.add(new Pair('i', 'a'));
arr.add(new Pair('a', 'f'));
arr.add(new Pair('g', 'h'));
arr.add(new Pair('f', 'g'));
arr.add(new Pair('z', 'i'));
Collections.sort(arr, new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
if (o1.a < o2.b) return 1;
else return 0;
}
});
// Expected output should be
// a f
// f g
// g h
// i a
// z i
for(Pair x : arr) {
System.out.println(x.a + " " + x.b);
}
// Actual output
// i a
// a f
// g h
// f g
// z i
}
}
class Pair {
char a;
char b;
Pair() {};
Pair(char a, char b) {
this.a = a;
this.b = b;
}
}
あなたは 'リターンを-1'不足している必要がありますように、コードが機能しない理由である1を省略しています。 –
'Pair'オブジェクトを' Comparable'インターフェースで実装し、 'compareTo(Pair anotherPair)'メソッドをオーバーライドする必要があります。 – t4dohx
貴重な返信をありがとう!分かりました! :) –