java List<Map<String,Object>> stream 常用操作

1.创建测试集合

List<Map<String,Object>> listMap = new ArrayList<>();
Map<String,Object> temp = new HashMap<>();
temp.put("name","张三");
temp.put("age",20);
temp.put("height",new BigDecimal("170.32"));
listMap.add(temp);
temp = new HashMap<>();
temp.put("name","李四");
temp.put("age",20);
temp.put("height",new BigDecimal("185.32"));
listMap.add(temp);
temp = new HashMap<>();
temp.put("name","王五");
temp.put("age",21);
temp.put("height",new BigDecimal("192.32"));
listMap.add(temp);

2.测试


 2.1 BigDecimal 求和

 BigDecimal sum = listMap.stream().map(e -> (BigDecimal)e.get("height")).reduce(BigDecimal.ZERO, BigDecimal::add);

2.2 BigDecimal 最大值

Map<String, Object> mapMax = listMap.stream().max((v1, v2) -> ((BigDecimal) v1.get("height")).compareTo((BigDecimal) v2.get("height"))).orElse(null);

2.3 BigDecimal 最小值

Map<String, Object> mapMin = listMap.stream().min((v1, v2) -> ((BigDecimal) v1.get("height")).compareTo((BigDecimal) v2.get("height"))).orElse(null);

2.4 List<Map<String,Object>> 分组

Map<String, List<Map<String, Object>>> mapGroup = listMap.stream().collect(Collectors.groupingBy(e -> e.get("name").toString()));

// 从数据库中出来的排列数据分组后乱序可以使用这个方法
Map<String, List<Map<String, Object>>> key = listMap.stream().collect(Collectors.groupingBy(e -> e.get("name").toString(), LinkedHashMap::new, Collectors.toList()));

2.5 List<Map<String,Object>> 排序

List<Map<String,Object>> mapSort = listMap.stream().sorted(Comparator.comparing(map->(BigDecimal) map.get("height"))).collect(Collectors.toList()); // 正序
Collections.reverse(mapSort); // 倒序

2.6 List<Map<String,Object>> 筛选

// 筛选 全部
List<Map<String,Object>> mapFindList = listMap.stream().filter(e -> "20".equals(e.get("age").toString())).collect(Collectors.toList());
// 查找一个
Map<String,Object> mapFindOne = listMap.stream().filter(p -> "20".equals(p.get("age").toString())).findAny().orElse(null);

2.7 List<Map<String,Object>> 抽取某一个字段

List<String> ListName = listMap.stream().map(e -> e.get("name").toString()).collect(Collectors.toList());

2.8 其他操作

// 求和
int ageAll = listMap.stream().mapToInt(e -> (int) e.get("age")).sum();
// 最大值
int ageMax = listMap.stream().mapToInt(e -> (int) e.get("age")).summaryStatistics().getMax();
// 最小值
int ageMin = listMap.stream().mapToInt(e -> (int) e.get("age")).summaryStatistics().getMin();
// 均值
double ageAvg = listMap.stream().mapToInt(e -> (int) e.get("age")).summaryStatistics().getAverage();
// 获取总数
long age = listMap.stream().mapToInt(e -> (int) e.get("age")).summaryStatistics().getCount();

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值