美文网首页
java8之一——lambda表达式

java8之一——lambda表达式

作者: 康康不遛猫 | 来源:发表于2017-08-26 23:43 被阅读0次

一、lambda

List<Apple> inventory = new ArrayList<>();
inventory.addAll(Arrays.asList(new Apple(80,"green"), new Apple(155, "green"), new Apple(120, "red")));

1、匿名内部类

inventory.sort(new Comparator<Apple>() {
            public int compare(Apple a1, Apple a2){
                return a1.getWeight().compareTo(a2.getWeight()); 
        }});

2、lambda与函数式接口

inventory.sort((a1, a2) -> a1.getWeight().compareTo(a2.getWeight()));

@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
}

Java 8增加了一种特殊的注解@FunctionalInterface,表明接口为函数式接口,接口默认方法不影响函数式接口契约

3、方法引用

inventory.sort(comparing(Apple::getWeight));

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
            Function<? super T, ? extends U> keyExtractor)
    {
        Objects.requireNonNull(keyExtractor);
        return (Comparator<T> & Serializable)
            (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
    }

相关文章

网友评论

      本文标题:java8之一——lambda表达式

      本文链接:https://www.haomeiwen.com/subject/vkdvrxtx.html