美文网首页
(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