java8之一——lambda表达式

一、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));
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,704评论 9 118
  • lambda表达式(又被成为“闭包”或“匿名方法”)方法引用和构造方法引用扩展的目标类型和类型推导接口中的默认方法...
    183207efd207阅读 1,553评论 0 5
  • 原文链接: Lambdas 原文作者: shekhargulati 译者: leege100 lambda表达式是...
    忽来阅读 6,753评论 8 129
  • 我心将往,黑暗还是光明? 如是往着黑暗, 我的双眼将被蒙蔽,像是在沙漠中迷路的骆驼。 永远都听不见摇铃人还在光明之...
    那天河川阅读 351评论 1 3
  • 昨天随心发个朋友圈,被很多朋友问:到底什么才是创业素质?Joye觉得,以这么多年的创业经验,对人对事的总结和判...
    JoyeDong阅读 748评论 0 1

友情链接更多精彩内容