解析Java开发之Lambda表达式之集合操作详解

2018-07-11 11:10:59 665浏览

今天扣丁学堂Java开发给大家整理了关于Lambda表达式操作集合的一些方式,其实主要是基于JAVA8的stream包和function包。下面我们一起来看一下Java培训之Lambda表达式之集合操作吧。

Lambda操作集合:Stream操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你就可以将多个操作依次串起来(链式编程)。

Stream的创建需要指定一个数据源,比如java.util.Collection的子类,List或者Set,Map不支持。

Stream的操作可以串行执行或者并行执行。Stream作为Java8的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。Java8中的Stream是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregateoperation),或者大批量数据操作(bulkdataoperation)。StreamAPI借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。同时提供串行和并行两种模式进行汇聚操作。


解析Java开发之Lambda表达式之集合操作详解


语法格式:

(参数)->{语句块}

其中只有一个参数的化()可以省略

Lambda表达式可以实现的操作:

1、中间操作

包括但不局限于:map、filter、distinct、sorted、peek、limit、skip、parallel、unordered等

示例:

  publicclassLambda_Test{
  privateList<Integer>scores=newArrayList<>();
  //map生成的是个1:1映射,每个输入元素,都按照规则转换成为另外一个元素
  @Test
  publicvoidtest1(){
  Collections.addAll(scores,newInteger[]{11,22,33,6,2,44});
  //Java8允许你使用::关键字来传递方法(静态方法和非静态方法)
  //遍历输出
  scores.stream().map(n->n*2).forEach(System.out::println);
  }
  //filter通过一个predicate接口来过滤并只保留符合条件的元素,该操作属于中间操作
  @Test
  publicvoidtest2(){
  Collections.addAll(scores,newInteger[]{11,22,33,6,2,44});
  //输出元素为偶数
  scores.stream().filter(n->n%2==0).forEach(System.out::println);
  }
  //sorted排序是一个中间操作,返回的是排序好后的Stream
  @Test
  publicvoidtest3(){
  Collections.addAll(scores,newInteger[]{11,22,33,6,2,44});
  //降序排列
  scores.stream().sorted((n1,n2)->n2-n1).forEach(System.out::println);
  }
  }

2、最终操作

包括但不局限于:forEach、toArray、min、max、count、anyMatch、allMatch、noneMatch、findFirst、findAny、iterator等

代码如下:

  //min最小值需要比较器
  //max最大值需要比较器
  //count元素个数无参
  @Test
  publicvoidtest4(){
  Collections.addAll(scores,newInteger[]{11,22,33,6,2,44});
  //最小值
  System.out.println("最小值:"+scores.stream().min((n1,n2)->n1-n2).get());
  //最大值
  System.out.println("最大值:"+scores.stream().max((n1,n2)->n1-n2).get());
  //计数
  System.out.println("元素个数:"+scores.stream().count());
  }
  //anyMatch只要有任意一个匹配就烦true
  @Test
  publicvoidtest5(){
  List<String>list=newArrayList<>();
  Collections.addAll(list,newString[]{"qianfeng","java","Android","BgiData","Python"});
  //校验元素内容是否包含a
  System.out.println(list.stream().anyMatch(n->n.contains("a")));
  }
  //findFirst总是返回Stream的第一个元素,或者空
  @Test
  publicvoidtest6(){
  List<String>list=newArrayList<>();
  Collections.addAll(list,newString[]{"qianfeng","java","Android","BgiData","Python"});
  //校验元素内容是否包含a
  System.out.println(list.stream().findFirst().get());
  }

以上就是关于Java开发之Lambda表达式之集合操作的详细介绍,希望对同学们参加Java培训有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。扣丁学堂不仅有专业的老师和与时俱进的课程体系,还有大量的Java视频教程供学员观看学习,想要快速学习Java开发技术的小伙伴快快行动吧。扣丁学堂H5技术交流群:559883758。

扣丁学堂微信公众号



【关注微信公众号获取更多学习资料】



查看更多关于“Java开发资讯”的相关文章>>

标签: Java培训 Java视频教程 Java在线视频 Lambda表达式之集合操作

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号