Java的stream包的几个使用
前言
java8引入的stream包不知道大家使用过没有,处理集合真的超级方便,目前工作中用到的stream包比较少,以下是我用到过的几个场景,希望可以帮助到大家。
1. 获取当前集合下某个字段的集合
例:获取当前集合下urid的集合
List<ResBean> beanList = new ArrayList<>();
List<String> uridList = beanList.stream().map(ResBean::getUrid).collect(Collectors.toList());
2. 通过某个字段分组
例:通过年月分组,2023-03、2023-04、2023-05 这里我的Repaydate字段是String类型的
List<ResBean> beanList = new ArrayList<>();
Map<String, List<ResBean>> dateToMapList = beanList .stream().collect(Collectors.groupingBy(ResBean::getRepaydate));
3. 通过某个字段过滤
例:过滤出当前集合下组织id=aaa的数据
String orgId = "aaa"
List<ResBean> beanList = new ArrayList<>();
List<ResBean> sybBeanList = beanList.stream().filter(b -> orgId.equals(b.getOrgid())).collect(Collectors.toList());
4.求集合某个字段的和
例:求出当前集合下Principal字段的合计
List<ResBean> beanList = new ArrayList<>();
BigDecimal principalSum = beanList.stream().map(ResBean::getPrincipal).reduce(BigDecimal.ZERO, BigDecimal::add);
5.通过list的2个字段组成map
如,通过id和list的索引index,组成一个map
List<ItemDao> itemDaoList = itemMapper.selectList(new QueryWrapper<ItemDao>().eq("categoryid", categoryid));
Map<String, Integer> collect1 = itemDaoList.stream().collect(Collectors.toMap(ItemDao::getId, itemDaoList::indexOf));