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

2022-11-17  本文已影响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;
    }


}

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());

//过滤出符合条件的数据
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}]
return codeValuePairs.stream()
            .filter(p -> !StringUtils.isBlank(p.getCode()))
            .collect(Collectors.toMap(
                p -> InputTypeId.parse(p.getCode()), CodeValuePair::getValue, (o1, o2) -> o1
            ));

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);
    }

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

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

上一篇 下一篇

猜你喜欢

热点阅读