lambda常用使用场景

例一

Thread t1 = new Thread(new Runnable() {
              @Override
              public void run() {
                  System.out.println("no use lambda");
              }
          });
          
Thread t2 = new Thread(() -> System.out.println("use lambda"));//只需要一行

例二

List<Integer> integers = Arrays.asList(4, 5, 6,1, 2, 3,7, 8,8,9,10);
 
List<Integer> evens = integers.stream().filter(i -> i % 2 == 0)
        .collect(Collectors.toList()); //过滤出偶数列表 [4,6,8,8,10]<br>
List<Integer> sortIntegers = integers.stream().sorted()
        .limit(5).collect(Collectors.toList());//排序并且提取出前5个元素 [1,2,3,4,5]
 
List<Integer> squareList = integers.stream().map(i -> i * i).collect(Collectors.toList());//转成平方列表
 
int sum = integers.stream().mapToInt(Integer::intValue).sum();//求和
 
Set<Integer> integersSet = integers.stream().collect(Collectors.toSet());//转成其它数据结构比如set
 
Map<Boolean, List<Integer>> listMap = integers.stream().collect(Collectors.groupingBy(i -> i % 2 == 0)); //根据奇偶性分组
 
List<Integer> list = integers.stream().filter(i -> i % 2 == 0).map(i -> i * i).distinct().collect(Collectors.toList());//复合操作

//转成平方列表   数据并行处理,只需要在原来的基础上加一个parallel()就可以开启~。顺便提一下这里parallel()开启的底层并行框架是fork/join,默认的并行数是Ncpu个。
List<Integer> squareList = integers.stream().parallel().map(i -> i * i).collect(Collectors.toList());

例三、for循环最好不要嵌套两层

List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
for (String feature : features) {
    System.out.println(feature); //外部迭代   
}

features.stream.forEach(n -> System.out.println(n)); //内部迭代

例四
尽量避免在Lambda的方法体中使用{}代码块
优先使用

Foo foo = parameter -> buildString(parameter);
private String buildString(String parameter) {
    String result = "Something " + parameter;
    //many lines of code
    return result;
}

而不是

Foo foo = parameter -> { String result = "Something " + parameter;
    //many lines of code
    return result;
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 注:之前关于Java8的认知一直停留在知道有哪些修改和新的API上,对Lambda的认识也是仅仅限于对匿名内部类的...
    mualex阅读 2,942评论 1 4
  • 今天做了什么呢?有什么进步?接了一点点线,晚上更没有做什么一整天就过去了。没有新收获。每天能接触到新事物新设备去践...
    小伟小伟小伟阅读 116评论 0 0
  • 亲爱的你,你说得清,什么是爱吗?你说得清,爱从哪里开始吗?你知道,应该用什么样的语言去和孩子讲“爱”吗? 在第一次...
    lekli阅读 1,174评论 2 18
  • 这两天听了一年级和三年级的几节课,有点小感触。 首先很庆幸现在的工作环境,有很多年龄相当,充满朝气的年轻人...
    Candy_D阅读 364评论 2 2
  • 落日余晖,看倦鸟归巢 绿岸长堤,极目远眺 夕阳不敌忧伤,奈何 有始无终,指尖幸福滑落 摊开残酷,看见血和泪滴 那一...
    胡锅巴阅读 214评论 0 5

友情链接更多精彩内容