Lambda表达式之Comparator
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; } }