Java Comparable インターフェースは、ユーザー定義クラスのオブジェクトを順序付けるために使用されます。このインターフェイスは java.lang パッケージにあり、compareTo(Object) という名前のメソッドが 1 つだけ含まれています。単一の並べ替えシーケンスのみが提供されます。つまり、単一のデータ メンバーのみに基づいて要素を並べ替えることができます。たとえば、ロール名、名前、年齢、その他何でも構いません。
CompareTo(Object obj) メソッド
public int CompareTo(Object obj): 現在のオブジェクトと指定されたオブジェクトを比較するために使用されます。戻ります
- 現在のオブジェクトが指定されたオブジェクトより大きい場合は、正の整数。
- 現在のオブジェクトが指定されたオブジェクトより小さい場合は、負の整数。
- 現在のオブジェクトが指定されたオブジェクトと等しい場合はゼロ。
次の要素を並べ替えることができます。
- 文字列オブジェクト
- ラッパークラスオブジェクト
- ユーザー定義のクラスオブジェクト
コレクションクラス
コレクション クラスは、コレクションの要素を並べ替えるための静的メソッドを提供します。コレクション要素が Set または Map の場合、TreeSet または TreeMap を使用できます。ただし、List の要素を並べ替えることはできません。 Collections クラスは、List 型要素の要素を並べ替えるメソッドを提供します。
List要素をソートするためのCollectionsクラスのメソッド
public void sort(リストリスト): Listの要素をソートするために使用されます。リスト要素は Comparable 型である必要があります。
注: String クラスと Wrapper クラスは、デフォルトで Comparable インターフェイスを実装します。したがって、文字列クラスまたはラッパー クラスのオブジェクトをリスト、セット、またはマップに保存すると、デフォルトで Comparable になります。
Java の比較可能な例
年齢に基づいてリスト要素を並べ替える Comparable インターフェイスの例を見てみましょう。
ファイル: Student.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } }
ファイル: TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
105 Jai 21 101 Vijay 23 106 Ajay 27
Java の比較例: 逆順
リスト要素を年齢に基づいて逆順に並べ替える Comparable インターフェイスの同じ例を見てみましょう。
ファイル: Student.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age<st.age) return 1; else -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21