-
Comparableインターフェースを実装する方法:
- ペアの要素が比較可能である場合、
Comparable
インターフェースを実装することでソートできます。 - ペアの要素が整数や文字列などの基本データ型である場合、既に
Comparable
インターフェースを実装しているため、追加のコーディングは必要ありません。 - ペアが独自のクラスで構成されている場合、そのクラスに
Comparable
インターフェースを実装し、compareTo()
メソッドをオーバーライドする必要があります。 - ソートするために
Arrays.sort()
メソッドを使用します。
以下は、要素が整数の場合の例です:
import java.util.Arrays; public class Pair implements Comparable<Pair> { private int first; private int second; public Pair(int first, int second) { this.first = first; this.second = second; } public int getFirst() { return first; } public int getSecond() { return second; } @Override public int compareTo(Pair other) { // ペアの要素を比較してソート順を決定します return Integer.compare(this.first, other.first); } public static void main(String[] args) { Pair[] pairs = {new Pair(3, 2), new Pair(1, 4), new Pair(5, 1)}; Arrays.sort(pairs); for (Pair pair : pairs) { System.out.println(pair.getFirst() + ", " + pair.getSecond()); } } }
出力結果:
1, 4 3, 2 5, 1
- ペアの要素が比較可能である場合、
-
Comparatorインターフェースを使用する方法:
- ペアの要素が比較不可能な場合や、既存のソート順とは異なる方法でソートする場合に使用します。
Comparator
インターフェースを実装し、compare()
メソッドをオーバーライドすることで、ソート順を定義します。- ソートするために
Arrays.sort()
メソッドにComparator
オブジェクトを渡します。
以下は、要素が文字列の場合にソートする例です:
import java.util.Arrays; import java.util.Comparator; public class Pair { private String first; private String second; public Pair(String first, String second) { this.first = first; this.second = second; } public String getFirst() { return first; } public String getSecond() { return second; } public static void main(String[] args) { Pair[] pairs = {new Pair("Apple", "Orange"), new Pair("Banana", "Pineapple"), new Pair("Cherry", "Grape")}; Arrays.sort(pairs, new Comparator<Pair>() { @Override public int compare(Pair pair1, Pair pair2) { // ペアの要素を比較してソート順を決定します return pair1.getFirst().compareTo(pair2.getFirst()); } }); for (Pair pair : pairs) { System.out.println(pair.getFirst() + ", " + pair.getSecond()); } } }
出力結果:
Apple, Orange Banana, Pineapple Cherry, Grape
これらの方法を使用すると、Javaでペアの配列をソートすることができます。ソート順は要件に応じて定義することができます。上記のコード例を参考にして、自身の要素の型やソート条件に合わせてカスタマイズしてください。