public class ComparatorTest {
public static void main(String[] args) {
Apple a1 = new Apple("red",120.33);
Apple a2 = new Apple("red",129.33);
Apple a3 = new Apple("red",119.33);
List<Apple> appleList = Arrays.asList(a1,a2,a3);
test1(appleList);
}
/**
* 方式1 创建类并实现Comparator
* @param appleList
*/
public static void test1(List<Apple> appleList){
appleList.sort(new AppleComparator());
System.out.println(JSON.toJSONString(appleList));
}
/**
* 方式2 匿名内部类
* @param appleList
*/
public static void test2(List<Apple> appleList){
appleList.sort(new Comparator<Apple>() {
@Override
public int compare(Apple o1, Apple o2) {
return o1.getWeight().compareTo(o2.getWeight());
}
});
}
/**
* 方式3 使用Lambda表达式
* @param appleList
*/
public static void test3(List<Apple> appleList){
appleList.sort(((o1, o2) -> o1.getWeight().compareTo(o2.getWeight())));
System.out.println(JSON.toJSONString(appleList));
}
/**
* 方式4 方法3改进
*/
public static void test4(List<Apple> appleList){
//comparing中的参数是Function的实现
appleList.sort(Comparator.comparing((a -> a.getWeight())));
System.out.println(JSON.toJSONString(appleList));
}
/**
* 方式5 使用方法引用
*/
public static void test5(List<Apple> appleList){
appleList.sort(Comparator.comparing((Apple::getWeight)));
System.out.println(JSON.toJSONString(appleList));
}
}
public class AppleComparator implements Comparator<Apple> {
@Override
public int compare(Apple o1, Apple o2) {
return o1.getWeight().compareTo(o2.getWeight());
}
}
public class Apple {
private String color;
private Double weight;
public Apple() {
}
public Apple(String color, Double weight) {
this.color = color;
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Double getWeight() {
return weight;
}
public void setWeight(Double weight) {
this.weight = weight;
}
}