3. Java8 Stream 操作

一、筛选与切片

方法 描述
filter 接收 Lambda , 从流中排除某些元素。
limit 截断流,使其元素不超过给定数量。
skip(n) 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补
distinct 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
  1. filter:过滤
emps.stream().filter(e -> e.getAge() > 35).forEach(System.out::println);
  1. limit:截断
emps.stream().limit(3).forEach(System.out::println);

3.skip:跳过

emps.stream().skip(2).forEach(System.out::println);

4.distinct:去掉重复(取决于hashCode() 和 equals()的算法)

emps.stream().distinct().forEach(System.out::println);

二、映射

方法 描述
map 接收 Lambda , 将元素转换成其他形式或提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流
List<String> strList = Arrays.asList("123", "456", "789", "abc", "def");
//转换为大写
strList.stream().map(String::toUpperCase).forEach(System.out::println);
//字符串截取
strList.stream().map(e->e.substring(1)).forEach(System.out::println);

三、排序

方法 描述
sorted() 自然排序
sorted(Comparator com) 定制排序
  1. 自然排序
strList.stream().sorted().forEach(System.out::println);
  1. 定制排序
  • 例1:
emps.stream().sorted((e1, e2) -> e1.getStatus().compareTo(e2.getStatus())).forEach(System.out::println);
  • 例2:
        emps.stream().sorted((x,y)->{
            if (x.getAge()==y.getAge()){
                return x.getName().compareTo(y.getName());
            }else {
                return Integer.compare(x.getAge(), y.getAge());
            }
        }).forEach(System.out::println);

会根据compare方法的返回值排序,改变顺序,需把两个比较的参数调换位置即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址: 深蓝至尊 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得...
    咻咻咻i阅读 4,868评论 0 0
  • 了解Stream ​ Java8中有两个最为重要的改变,一个是Lambda表达式,另一个就是Stream AP...
    龙历旗阅读 8,578评论 3 4
  • 前言: 北京时间2018年9月26日,Oracle官方发布Java 11。既然版本都更新到11了,现在才来学8是不...
    贪挽懒月阅读 4,571评论 0 16
  • 前一段时间出了一个令人哭笑不得的一则新闻,俞灏明在机场搭讪刘烨,但是因为当时刘烨没有认出俞灏明,所以刘烨以为是一位...
    娱秘事阅读 3,085评论 0 1
  • 上午去菜市场买菜,平常一个很拥挤繁忙的巷子口,远远看去很有秩序。 有几个人买好菜了,双手提着大大小小袋子在路口耐心...
    沧海愚夫阅读 3,184评论 0 4