例1
コードコピーは次のとおりです。
パッケージcom.yonyou.test;
java.util.arraylistをインポートします。
java.util.collectionsをインポートします。
java.util.comparatorをインポートします。
java.util.listをインポートします。
パブリッククラステスト{
public static void main(string [] args){
学生ZLJ =新しい学生( "Ding Xiaoyu"、21);
学生dxy = new Student( "zhao si"、22);
学生CJC =新しい学生( "Zhang San"、11);
学生lgc = new Student( "liu wu"、19);
リスト<Student> StudentList = new ArrayList <Student>();
StudentList.Add(ZLJ);
StudentList.Add(dxy);
StudentList.Add(CJC);
StudentList.Add(LGC);
system.out.println( "年ごとにソート:");
collections.sort(StudentList、new Sortbyage());
for(学生:学生リスト){
system.out.println(sustent.getname() + " /" + sustent.getage());
}
System.out.println( "==========");
system.out.println( "sorted by name");
collections.sort(Studentlist、new Sortbyname());
for(学生:学生リスト){
system.out.println(sustent.getname() + " /" + sustent.getage());
}
}
}
クラスのソートバージは、コンパレータを実装しています{
public int Compare(オブジェクトO1、オブジェクトO2){
学生S1 =(学生)O1;
学生S2 =(学生)O2;
if(s1.getage()> s2.getage())
返品1;
else if(s1.getage()== s2.getage()){
0を返します。
}
return -1;
}
}
クラスSORTBYNAMEを実装するComparator {
public int Compare(オブジェクトO1、オブジェクトO2){
学生S1 =(学生)O1;
学生S2 =(学生)O2;
if(s1.getname()。compareto(s2.getname())<0)
return -1;
else if(s1.getname()。compareto(s2.getname())> 0){
返品1;
}
0を返します。
}
}
クラスの学生{
プライベートインクエイジ;
プライベート文字列名;
public int getage(){
戻り年齢;
}
public void Setage(int age){
this.age = age;
}
public string getName(){
返品名;
}
public void setName(string name){
this.name = name;
}
パブリック学生(文字列名、int age){
this.age = age;
this.name = name;
}
}
例2
たとえば、アレイの並べ替えで問題が発生します。これは、ArrayListアレイにオブジェクトを保存する必要があります。
実際、この状況はしばしば遭遇します。
ソースコードを以下に示します。
1:person.javaファイル:
コードコピーは次のとおりです。
パブリッククラスの人{
文字列名;
int age;
パブリックパーソン(文字列名、int age){
this.name = name;
this.age = age;
}
public int getage(){
戻り年齢;
}
public void Setage(int age){
this.age = age;
}
public string getName(){
返品名;
}
public void setName(string name){
this.name = name;
}
}
2:mycomparator.java
コードコピーは次のとおりです。
//コンパレータインターフェイスを実装する、つまりソートルールを定義するには、ほぼすべてのルールを定義できます
パッケージcom.infoearth;
Java.util。*をインポートします。
パブリッククラスのMyComparatorはComparatorを実装しています{
public int Compare(オブジェクトO1、オブジェクトO2){
人P1 =(人)O1;
人P2 =(人)O2;
if(p1.age <p2.age)
返品1;
それ以外
0を返します。
}
}
3:listsort.java
コードコピーは次のとおりです。
パッケージcom.infoearth;
java.util.arraylistをインポートします。
java.util.collectionsをインポートします。
java.util.comparatorをインポートします。
パブリッククラスリストソート{
public static void main(string [] args){
arrayList list = new ArrayList();
list.add(new person( "lcl"、28));
list.add(new person( "fx"、23));
list.add(新しい人( "wqx"、29));
Comparator comp = new MyComparator();
collections.sort(list、comp);
for(int i = 0; i <list.size(); i ++){
人p =(人)list.get(i);
System.out.println(p.getName());
}
}
}
もちろん、リストが基本タイプまたは文字列に包まれている場合は、collections.sort(list);