学习Java8中StreamAPI的笔记

本次笔记记录一下我自己学习Stream流的一个情况。

第一种:使用Stream流来代替增强for循环进行赋值:
这是使用增强for循环的写法:

 public static void main(String[] args) {

        ArrayList<String> strings = new ArrayList<>();
        strings.add("李四");
        strings.add("张三");
        strings.add("王五");
        
        strings.stream().forEach(System.out::println);

    }

执行结果为:
在这里插入图片描述
第三个,使用Filter来进行简单的过滤

public class demmo   {
    public static void main(String[] args) {

        ArrayList<String> strings = new ArrayList<>();
        strings.add("张三");
        strings.add("李四");
        strings.add("王五");
        strings.add("王二麻子");

        strings.stream().filter(string->!string.equals("张三")).forEach(System.out::println);

    }
}

执行结果为:
在这里插入图片描述

第三种:使用Stream流的filte和noneMatch来过实现滤多组数据的值(把两组List一个当作条件一个当作结果,A组里面含有B的(map结构是为了模拟实际业务中 key:value的情况,可以进行替换成为需要的数据)),实现复杂数据的对比。

public class demmo   {
    public static void main(String[] args) {
         List<Map<String, String>> list1 = new ArrayList<>();

        HashMap<String, String> stringStringHashMap1 = new HashMap<>();
        stringStringHashMap1.put("name", "张三");
        list1.add(stringStringHashMap1);

        HashMap<String, String> stringStringHashMap2 = new HashMap<>();
        stringStringHashMap2.put("name", "王五");
        list1.add(stringStringHashMap2);

        List<Map<String, String>> list2 = new ArrayList<>();

        HashMap<String, String> stringStringHashMap3 = new HashMap<>();
        stringStringHashMap3.put("name", "张三");
        list2.add(stringStringHashMap3);

        List<Map<String,String>>newList=
        list1.stream().filter(map->list2.stream().noneMatch(obj->obj.get("name").equals(map.get("name")))).collect(Collectors.toList());
        for (Map<String, String> ssmap : newList){
        System.out.println(ssmap);
    }
}
}

执行结果为
在这里插入图片描述
去除了张三这个相同的值,只有王五这个值,这个还能继续扩展,自己发挥吧。

第四种,使用Stream流来进行截取,选择一串数据的前几个来进行显示。

public class demmo   {
    public static void main(String[] args) {

        ArrayList<String> strings = new ArrayList<>();
        strings.add("张三");
        strings.add("李四");
        strings.add("王五");
        strings.add("王二麻子");

        strings.stream().limit(2).forEach(System.out::println);

    }
}

执行结果为:
在这里插入图片描述
Stream流和其他循环的比较:

总结:

顺序代表优先选择。
1.一万左右数据 1、(普通for 或者 parallelstream foreach ) 2、( 增强版for ) 3、(普通foreach) 4、(stream foreach)
2.十万左右及以上数据1、(parallelstream foreach)2、(stream foreach)3、( 普通foreach) 4 (普通for 或者 增强版for)
2.continue break 在普通for环境和增强for循环中可以使用,在两种foreach中不能使用
3.return 在普通for环境和增强for循环中是指定方法返回值,而在两种foreach中是起到continue类似的作用
4.入参都可以是空集合,都不能是null

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值