Java闆嗗悎鑳藉惁鑷畾涔夋帓搴?
Java闆嗗悎鍙互鑷畾涔夋帓搴忋€傛湁涓ょ鏂规硶鍙互瀹炵幇鑷畾涔夋帓搴忥細浣跨敤Comparator鎺ュ彛鍜孋omparable鎺ュ彛銆?/p>
- 浣跨敤Comparator鎺ュ彛锛氶€氳繃瀹炵幇Comparator鎺ュ彛鏉ュ畾涔夋瘮杈冭鍒欙紝鍙互鍦ㄤ笉淇敼鍘熷瀵硅薄鐨勬儏鍐典笅杩涜鎺掑簭銆侰omparator鎺ュ彛鏈変竴涓猚ompare(T o1, T o2)鏂规硶锛屽彲浠ュ湪鍏朵腑瀹氫箟鑷畾涔夌殑姣旇緝瑙勫垯銆傜劧鍚庡皢Comparator瀵硅薄浼犻€掔粰闆嗗悎鐨勬帓搴忔柟娉曪紝濡侰ollections.sort()鎴朅rrays.sort()銆?/li>
绀轰緥浠g爜锛?/p>
import java.util.Comparator;
public class CustomComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
// 鑷畾涔夋瘮杈冭鍒欙紝姣斿鎸夌収鏁板瓧澶у皬浠庡ぇ鍒板皬鎺掑簭
return o2 - o1;
}
}
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
CustomComparator customComparator = new CustomComparator();
Collections.sort(list, customComparator);
System.out.println(list); // 杈撳嚭锛歔3, 2, 1]
}
}
- 浣跨敤Comparable鎺ュ彛锛氶€氳繃瀹炵幇Comparable鎺ュ彛鏉ュ畾涔夊璞$殑鑷劧椤哄簭锛屽彲浠ョ洿鎺ヨ皟鐢ㄩ泦鍚堢殑鎺掑簭鏂规硶杩涜鎺掑簭銆侰omparable鎺ュ彛鏈変竴涓猚ompareTo(T o)鏂规硶锛岄渶瑕佸湪鍏朵腑瀹氫箟瀵硅薄鐨勬瘮杈冭鍒欍€?/li>
绀轰緥浠g爜锛?/p>
public class Student implements Comparable<Student> {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Student o) {
// 鑷畾涔夋瘮杈冭鍒欙紝姣斿鎸夌収骞撮緞浠庡皬鍒板ぇ鎺掑簭
return this.age - o.age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 18));
students.add(new Student("Charlie", 25));
Collections.sort(students);
for (Student student : students) {
System.out.println(student);
}
}
}
浠ヤ笂鏄袱绉嶈嚜瀹氫箟鎺掑簭鐨勬柟娉曪紝寮€鍙戜汉鍛樺彲浠ユ牴鎹疄闄呴渶姹傞€夋嫨鍚堥€傜殑鏂规硶鏉ュ疄鐜拌嚜瀹氫箟鎺掑簭銆?/p>
相关问答