流式计算知识

本文介绍了如何使用Java处理包含数组属性的对象集合,实现对name属性值的分组计数。提供了两种不同的方法,通过Stream API扁平化处理数据并使用Collectors进行分组统计。此外,还展示了如何过滤出value大小超过3的Map条目。这些技巧在处理复杂数据结构时非常实用。
摘要由CSDN通过智能技术生成

对象属性为数组,根据属性分组统计

数据结构:

[
{"id":"1","name":["aa","bb"]},
{"id":"1","name":["bb","cc"]}
]

需求:我们需要将name里面的属性值进行分组统计个数
方法一:

  ArrayList<Person> peoples = new ArrayList<>();
        peoples.add(new Person("1", Stream.of("aa", "bb").collect(Collectors.toList())));
        peoples.add(new Person("2", Stream.of("bb", "cc").collect(Collectors.toList())));
        Map<String, Integer> collect = peoples.stream().flatMap(people -> people.getName().stream()).collect(Collectors.toMap(k -> k, v -> 1, Integer::sum));
        System.out.println(collect);

方法二:

HashMap<String, Integer> map = new HashMap<>();
        ArrayList<Person> peoples = new ArrayList<>();
        peoples.add(new Person("1", Stream.of("aa", "bb").collect(Collectors.toList())));
        peoples.add(new Person("2", Stream.of("bb", "cc").collect(Collectors.toList())));
        peoples.stream().flatMap(people -> people.getName().stream()).forEach(str -> map.merge(str, 1, Integer::sum));
        map.forEach((k, v) -> System.out.println(k + "  " + v));

一个map,过滤value的值大于3的map

Map<String, List<ChatVo>> sendMap=new HashMap();

我们想过滤value的size大于3的map:

Map<String, List<ChatVo>> sendMap=sendMap.entrySet().stream().filter(a -> a.getValue().size() > 3).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java后端指南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值