集合中stream流的操作

集合中stream流的常用方法和操作

装换元素-map()

将流中的每个元素按照给定的转换规则进行转换-返回一个新的流

        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
        //s表示进来的每一个元素  需要Function<? super T, ? extends R> mapper类型的  new 1个这个就可以
        Stream<Object> stream1 = names.stream().map(new Function<String, Object>() {
            @Override
            public Object apply(String s) {
                return s.length();
            }
        });
        // o1表示每一个元素 o1是方法参数   5 3 7返回长度
        stream1.forEach(o1 -> System.out.println(o1));

查找第一个元素–findFirst()

 String[] strs = {"aaa","bbb","ccc"};
        //查找第一个元素--findFirst  Stream.of(里面可传任何东西)
        Optional<String> first = Stream.of(strs).findFirst();
        System.out.println("获取第一个元素"+first.get());

排序–sorted()

1 自然升序 降序排序

   // 降序
    Stream<Dictory> sorted = collectDown.stream().sorted(Comparator.reverseOrder());
    
    Stream<Dictory> sorted2 = collectDown.stream().sorted();

2 单字段排序

 ArrayList<Dictory> arrayList1 = new ArrayList<>();
        Dictory dictory = new Dictory();
        Dictory dictory1 = new Dictory();
        dictory1.setId(2);
        dictory1.setStation("2站");
        dictory1.setCreate_by("岳鹏程");
        dictory.setId(1);
        dictory.setStation("1站");
        dictory.setCreate_by("岳鹏程");
        arrayList1.add(dictory);
        arrayList1.add(dictory1);
        List<Dictory> collect = arrayList1.stream().sorted(Comparator.comparing(Dictory::getId)).collect(Collectors.toList());
        collect.forEach(new Consumer<Dictory>() {
            @Override
            public void accept(Dictory dictory) {
                System.out.println("升序排序"+dictory);
            }
        });

// 降序排序
        List<Dictory> collectDown = arrayList1.stream().sorted(Comparator.comparing(Dictory::getId,Comparator.reverseOrder())).collect(Collectors.toList());
        collectDown.forEach(new Consumer<Dictory>() {
            @Override
            public void accept(Dictory dictory) {
                System.out.println("降序排序"+dictory);
            }
        });

3 多字段排序

按照id和delete_flag排序

        ArrayList<Dictory> arrayList2 = new ArrayList<>();

        List<Dictory> collect1 = arrayList2.stream().sorted(Comparator.comparing(Dictory::getId).thenComparing(Dictory::getDelete_flag)).collect(Collectors.toList());

4 排序字段空值的报错处理

特殊情况:该属性有为 null 的情况会报错 可以通过加上一个nullsLast限制 来解决
ArrayList<Dictory> arrayList2 = new ArrayList<>();
List<Dictory> collect6 =arrayList2.stream().sorted(Comparator.comparing(Dictory::getId,Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());

5 collect方法 收集结果

收集到一个list集合中

        List<Dictory> collect = arrayList.stream().filter(new Predicate<Dictory>() {
            @Override
            public boolean test(Dictory dictory) {
                String create = dictory.getCreate_by();
                if (create.equals("岳鹏程")) {
                    return true;
                }
                return false;
            }
        }).collect(Collectors.toList());
        System.out.println(collect);    //返回2个对象 list集合中

5 过滤–filter()

        Dictory dictory = new Dictory();
        Dictory dictory1 = new Dictory();
        dictory1.setId(2);
        dictory1.setStation("2站");
        dictory1.setCreate_by("岳鹏程");
        dictory.setId(1);
        dictory.setStation("1站");
        dictory.setCreate_by("岳鹏程");
        ArrayList<Dictory> arrayList = new ArrayList<>();
        arrayList.add(dictory);
        arrayList.add(dictory1);
        ArrayList<Object> arrayList1 = new ArrayList<>();
        // 返回集合中第一个元素
        Object o = arrayList.stream().filter(new Predicate<Dictory>() {
            @Override
            public boolean test(Dictory dictory) {
                int id = dictory.getId();
                if (id == 1) {
                    return true;  //id=1的实体类过滤出来了
                }
                return false;
            }
        }).findFirst();  //走到findFirst才会进入方法中
        System.out.println(o); //是实体类可转

6 skip()-跳过流中的前n个元素,返回一个新流

        List<Integer> list11 = Arrays.asList(1, 2, 3, 4);
        Stream<Integer> skip = list11.stream().skip(2);
        skip.forEach(System.out::println);   // 3 4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值