美文网首页
(5条消息) stream常用方法及stream().filte

(5条消息) stream常用方法及stream().filte

作者: 学习微站 | 来源:发表于2022-11-17 22:57 被阅读0次

    stream常用方法

    public class test {
        public static void main(String[] args) {
            List<KeyValue> keyValueList = new LinkedList<>();
            keyValueList.add(newKeyValue("1", "1"));
            keyValueList.add(newKeyValue("2", "1"));
            keyValueList.add(newKeyValue("3", "33333"));
            keyValueList.add(newKeyValue("4", "56"));
            keyValueList.add(newKeyValue("5", "55"));
            keyValueList.add(newKeyValue("5", "55"));
            System.out.println(keyValueList);
            //分组
            Map<String, List<KeyValue>> map = keyValueList.stream().collect(groupingBy(KeyValue::getValue));
            System.out.println(map);
            //还有sum() max() min() average()看名字就是什么
            //过滤
            List<KeyValue> collect1 = keyValueList.stream()
                    .filter(keyValue -> "1".equals(keyValue.getValue())).collect(toList());
            System.out.println(collect1);
            //去除重复元素
            List<KeyValue> collect2 = keyValueList.stream().distinct().collect(toList());
            System.out.println(collect2);
            //排序 升序
            List<KeyValue> collect3 = keyValueList.stream()
                    .sorted((p1, p2) -> Integer.valueOf(p1.getValue()) - Integer.valueOf(p2.getValue())).collect(toList());
            System.out.println(collect3);
            //前几
            List<KeyValue> collect4 = keyValueList.stream().limit(2).collect(toList());
            //去除前几
            List<KeyValue> collect = keyValueList.stream().skip(2).collect(toList());
            //将流中的每一个元素 T 映射为 R(类似类型转换)
            List<String> strings = keyValueList.stream().map(KeyValue::getValue).collect(toList());
            System.out.println(strings);
            //打印
            keyValueList.stream().forEach(System.out::println);
    
        }
    
        public static KeyValue newKeyValue(String key, String value) {
            KeyValue keyValue = new KeyValue();
            keyValue.setKey(key);
            keyValue.setValue(value);
            return keyValue;
        }
    
    
    }
    
    

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    stream().filter()的用法
    stream.filter一般适用于list集合,主要作用就是模拟sql查询,从集合中查询想要的数据。filter里面的参数user是指集合里面的每一项 配合collect 使用

    过滤空指针异常

            List<Stu> filtered = list.stream().filter(s ->  s.getAge() != null && s.getAge()==19).collect(Collectors.<Stu>toList());
    
    
    • 1
    • 2
    //过滤出符合条件的数据
    List<Apple> filterList = appleList.stream().filter(a -> a.getName().equals("香蕉")).collect(Collectors.toList());
     
    System.err.println("filterList:"+filterList);
    [Apple{id=2, name='香蕉', money=2.89, num=30}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    return codeValuePairs.stream()
                .filter(p -> !StringUtils.isBlank(p.getCode()))
                .collect(Collectors.toMap(
                    p -> InputTypeId.parse(p.getCode()), CodeValuePair::getValue, (o1, o2) -> o1
                ));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Java8 Stream collect(Collectors.toMap()) 用法

    Collectors.toMap 用法 在我们实际开发过程中经常使用到将List 转为Map的过程,在Java8 中Stream提供简便开发的方式,

    三个重载的方法 两个参数

    public static <T, K, U>
        Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
                                        Function<? super T, ? extends U> valueMapper) {
            return new CollectorImpl<>(HashMap::new,
                                       uniqKeysMapAccumulator(keyMapper, valueMapper),
                                       uniqKeysMapMerger(),
                                       CH_ID);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    ————————————————
    版权声明:本文为CSDN博主「#卡车司机」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_42618152/article/details/118975208

    本文使用 文章同步助手 同步

    相关文章

      网友评论

          本文标题:(5条消息) stream常用方法及stream().filte

          本文链接:https://www.haomeiwen.com/subject/sfgqtdtx.html