Comparable函数式接口
int compareTo(T o)结果是一个整数
例子:
package com.ls.java8.compare;
public class User implements Comparable<User> {
int age;
@Override
public int compareTo(User o) {//这个方法里面就是规则
if(age>o.age) {
return 1;
}else if(age<o.age) {
return -1;
}
return 0;
}
}
package com.ls.java8.compare;
public class CompareDemo1 {
public static void main(String[] args) {
User u=new User();
u.age=20;
User u1=new User();
u1.age=20;
if(u1.compareTo(u)>0) {
System.out.println("u1>u");
}
else if(u1.compareTo(u)<0) {
System.out.println("u1<u");
}
else {
System.out.println("u1=u");
}
}
}
Comparator是一个函数式接口
int compare(T o1,T o2)返回一个整数
package com.ls.java8.compare;
import java.util.Comparator;
public class MyAgeComparator implements Comparator<User> {
@Override
public int compare(User o1, User o2) {
if(o1.age>o2.age) {
return 1;
}
else if(o1.age<o2.age) {
return -1;
}
else {
System.out.println("u1=u");
}
return 0;
}
}
区别:第一个接口为子类提供比较的能力
第二个接口封装了比较的逻辑,可用于策略设计模式,其子类常作为排序中的参数