예 1
코드 사본은 다음과 같습니다.
패키지 com.yonyou.test;
java.util.arraylist 가져 오기;
java.util.collections import;
import java.util.comparator;
Java.util.list 가져 오기;
공개 수업 테스트 {
public static void main (String [] args) {
학생 ZLJ = 신입생 ( "Ding Xiaoyu", 21);
학생 dxy = 신입생 ( "Zhao Si", 22);
학생 CJC = 신입생 ( "Zhang San", 11);
학생 LGC = 신입생 ( "Liu Wu", 19);
목록 <tudent> StudentList = New ArrayList <tudent> ();
StudentList.Add (ZLJ);
StudentList.Add (DXY);
StudentList.Add (CJC);
StudentList.Add (LGC);
System.out.println ( "연도별로 정렬 :");
Collections.Sort (StudentList, New SortByage ());
for (학생 학생 : 학생 목록) {
System.out.println (whening.getName () + " /" + whitital.getage ());
}
System.out.println ( "=========");
System.out.println ( "이름으로 정렬");
Collections.Sort (StudentList, New SortByName ());
for (학생 학생 : 학생 목록) {
System.out.println (whening.getName () + " /" + whitital.getage ());
}
}
}
클래스 SortByage Implements Comparator {
public int compare (Object O1, Object O2) {
학생 S1 = (학생) O1;
학생 S2 = (학생) O2;
if (s1.getage ()> s2.getage ())
반환 1;
else if (s1.getage () == s2.getage ()) {
반환 0;
}
반품 -1;
}
}
클래스 SortByName Amments Comparator {
public int compare (Object O1, Object O2) {
학생 S1 = (학생) O1;
학생 S2 = (학생) O2;
if (s1.getName (). 비교 (s2.getName ()) <0)
반품 -1;
else if (s1.getName (). compareto (s2.getName ())> 0) {
반환 1;
}
반환 0;
}
}
클래스 학생 {
사적인 int 연령;
개인 문자열 이름;
public int getage () {
귀환 연령;
}
공개 무효 설정 (int Age) {
this.age = age;
}
공개 문자열 getName () {
반환 이름;
}
public void setName (문자열 이름) {
this.name = 이름;
}
공개 학생 (문자열 이름, int age) {
this.age = age;
this.name = 이름;
}
}
예 2
예를 들어 배열 정렬에 문제가 발생합니다. 예를 들어, 인스턴스 객체가 Arraylist 배열에 저장된 사람 클래스가 있습니다.
실제로이 상황은 종종 발생합니다.
소스 코드는 다음과 같습니다.
1 : person.java 파일 :
코드 사본은 다음과 같습니다.
공공 계급 사람 {
문자열 이름;
int 연령;
공개 사람 (문자열 이름, int age) {
this.name = 이름;
this.age = age;
}
public int getage () {
귀환 연령;
}
공개 무효 설정 (int Age) {
this.age = age;
}
공개 문자열 getName () {
반환 이름;
}
public void setName (문자열 이름) {
this.name = 이름;
}
}
2 : mycomparator.java
코드 사본은 다음과 같습니다.
// 비교기 인터페이스 구현, 즉 정렬 규칙을 정의하면 거의 모든 규칙을 정의 할 수 있습니다.
패키지 com.infoearth;
java.util.*;
공개 클래스 MyComparator는 비교기 {
public int compare (Object O1, Object O2) {
사람 P1 = (사람) O1;
사람 P2 = (사람) O2;
if (p1.age <p2.age)
반환 1;
또 다른
반환 0;
}
}
3 : ListSort.java
코드 사본은 다음과 같습니다.
패키지 com.infoearth;
java.util.arraylist 가져 오기;
java.util.collections import;
import java.util.comparator;
공개 클래스 ListSort {
public static void main (String [] args) {
ArrayList List = New ArrayList ();
list.add (새로운 사람 ( "lcl", 28));
list.add (신규 사람 ( "fx", 23));
list.add (신규 사람 ( "wqx", 29));
비교기 comp = new mycomparator ();
collections.sort (list, comp);
for (int i = 0; i <list.size (); i ++) {
Person P = (사람) list.get (i);
System.out.println (p.getName ());
}
}
}
물론, 목록이 기본 유형 또는 문자열로 래핑되는 경우 collections.sort (list)만으로;