Comparable 是排序接口。
Comparable接口中定义了一个方法:
public interface Comparable<T> {
public int compareTo(T o);
}
假设我们通过 x.compareTo(y) 来“比较x和y的大小”。
举例:
public class Girl implements Comparable<Object> {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Girl(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Girl [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Object o) {
Girl g = (Girl)o;
return this.age - g.getAge();
}
}
public static void main(String[] args) {
List<Girl> list = new ArrayList<>(100);
Girl girl;
for (int i=0; i<75; i++) {
girl = new Girl("girl " + i, i);
list.add(girl);
}
Collections.shuffle(list);
Collections.sort(list);
list.stream().forEach(System.out::println);
}
Comparator 是比较器接口。
Comparator接口中定义了两个方法:
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
}
compare返回值:
举例:
public class GirlComparator implements Comparator<Girl> {
@Override
public int compare(Girl g1, Girl g2) {
return g1.getAge() - g2.getAge();
}
}
public static void main(String[] args) {
List<Girl> list = new ArrayList<>(100);
Girl girl;
for (int i = 0; i< 75; i++) {
girl = new Girl("girl "+i, i);
list.add(girl);
}
Collections.sort(list,new GirlComparator());
list.stream().forEach(System.out::println);
}
原文:https://www.cnblogs.com/fantasyfc/p/11264003.html