List<Map<String, Object>> jobList = generateList();
System.out.println(jobList);
//去重
List<Object> tempList = jobList.stream().map(item -> item.get("type")).distinct().collect(Collectors.toList());
System.out.println(tempList);
List<Map<String, Object>> priceList = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("type", "CA3");
map1.put("price", "3.4");
priceList.add(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("type", "CA4");
map2.put("price", "2.5");
priceList.add(map2);
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("type", "BA3");
map3.put("price", "1");
priceList.add(map3);
Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("type", "BA4");
map4.put("price", "0.5");
priceList.add(map4);
Map<String, Object> map5 = new HashMap<String, Object>();
map5.put("type", "BA4");
map5.put("price", "1.5");
priceList.add(map5);
System.out.println(priceList);
// list 转map
Map<Object, Object> priceMap = priceList.stream().collect(Collectors.toMap(item -> item.get("type"),
item -> item.get("price"),
(item1, item2) -> Float.parseFloat((String)item1) > Float.parseFloat((String)item2) ? item1:item2));
System.out.println(priceMap);
// list按照指定字段分组转map
Map<String,List<Map<String, Object>>> groupListMap = jobList.stream().collect(Collectors.groupingBy(item -> (String)item.get("type")));
System.out.println(groupListMap);
// 分组展开为list
List<Map<String, Object>> listMap = groupListMap.values().stream().flatMap(item -> item.stream()).collect(Collectors.toList());
System.out.println(listMap);
BigDecimal btotal = jobList.stream()
.filter(item -> ((String)item.get("type")).contains("B"))
.map(item -> {
BigDecimal countBigDecimal = new BigDecimal((int)item.get("count"));
BigDecimal priBigDecimal = new BigDecimal((String)priceMap.get((String)item.get("type")));
return countBigDecimal.multiply(priBigDecimal);
})
.reduce(BigDecimal.ZERO, (b1,b2) -> b1.add(b2));
System.out.println(btotal);
List<Map<String, Object>> step1 = jobList.stream()
.filter(item -> ((String)item.get("type")).contains("B"))
.collect(Collectors.toList());
System.out.println(step1);
List<BigDecimal> step2 = jobList.stream()
.filter(item -> ((String)item.get("type")).contains("B"))
.map(item -> new BigDecimal((int)item.get("count")).multiply(new BigDecimal((String)priceMap.get((String)item.get("type")))))
.collect(Collectors.toList());
System.out.println(step2);
stream 流的一些简单用法
最新推荐文章于 2023-06-25 16:39:30 发布