java 8 Stream的常用用法

目录

前言

1. forEach遍历

2. filter过滤

3. limit截取

4. skip跳过

5. distinct去重

6. map映射

7. flatMap

8. findFirst

9. findAny

10. min和max

11. sorted排序

12. peek

13. toArray

14. reduce

15. count

16. anyMatch 

17. allMatch

18. noneMatch 

前言

平时工作中对于集合操作用到最多的就是stream流了,这里整理一下关于stream流的常见用法集合。

1. forEach遍历

 void forEach(Consumer<? super T> action):用来遍历stream流中的数据。

    public static void main(String[] args) {
       //获取一个Stream流
        List<String> list = Arrays.asList("abc", "bcdm","rfcjg","xvhcnr","bcsrttk");
        // 输出集合中元素的长度值:3,4,5,6,7
        list.stream().mapToInt(str -> str.length()).forEach(System.out::println);
        //使用Stream流的方法forEach对stream流中的数据遍历
        list.forEach((String name) -> {
            System.out.println(name);
        });
}

2. filter过滤

Stream<T> filter(Predicate<? super T> predicate):用于对Stream流中的数据进行过滤。

    public static void main(String[] args) {
        Stream<String>  streamTest = Stream.of("zhangshab", "lisi","lisi","lisi", "xiaobai","zhanxihua","zhoushengsheng");

       Stream<String> stream1 = streamTest.filter((String name) -> {
            return name.startsWith("zhan");
        });
        /*  int sum = widgets.stream()
                .filter(w -> w.getColor() == RED)
                .mapToInt(w -> w.getWeight())
                .sum(); */
       //输出strem1
        stream1.forEach((name)-> System.out.println(name));

        //多条件过滤
        List<String> stream2 = streamTest.filter((String name) -> {
            if(name.length()>=3 && name.equals("zhanxihua")){
                return true;
            }
            return false;
        }).collect(Collectors.toList());
      //输出strem2
        System.out.println(stream2);
}

3. limit截取

Stream<T> limit(long maxSize): 用于截取流中的元素,对集合元素最大数量进行限制,截取的参数长度不能大于集合长度,否则不进行操作。
    public static void main(String[] args) {
        Stream<String>  streamTest = Stream.of("zhangshab", "lisi", "xiaobai","zhanxihua","zhoushengsheng");
/*        streamTest.forEach((String name) -> {
            System.out.println(name);
        });*/

        // 截取前2个元素
        List<String> list = streamTest.limit(2).collect(Collectors.toList());
        // 输出
        System.out.println(list);
}

4. skip跳过

Stream<T> skip(long n) : 对集合元素进行跳过,如果流的当前长度大于n,则跳过前n个,否则将会得到一个长度为0的空流 。
    public static void main(String[] args) {
        Stream<String>  streamTest = Stream.of("zhangshab","zhoudafu", "lisi", "xiaobai","zhanxihua","zhoushengsheng");

        //跳过前2个元素
        List<String> list = streamTest.distinct().skip(2).collect(Collectors.toList());
        System.out.println(list);
}

5. distinct去重

Stream<T> distinct(): 对集合元素进行去重,返回新的Stream.

    public static void main(String[] args) {
        Stream<String>  streamTest = Stream.of("zhangshab","zhoudafu", "lisi","lisi","lisi", "xiaobai","zhanxihua","zhoushengsheng");
        //去重
        List<String> list = streamTest.distinct().collect(Collectors.toList());
        System.out.println(list);
}</
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值