java 8 使用stream 之后 对于集合等数据的处理
对于一个List<Map<String, Object>>类型的数据,可以使用Java 8的新特性stream流来进行遍历、过滤、查询、去重、排序、分组等操作。
//查数据
List<Map<String, Object>> extCardInfoList= xxxMapper.selectInfo(pars);
//查询出map中key名为id的值并提取出来
List<String> ids= extCardInfoList.stream()
.map(m -> m.get("id").toString())
.collect(Collectors.toList());
2.根据某个key求对应value和**
**
int totalNums= extCardInfoList.stream()
.collect(Collectors.summingDouble( e -> Double.parseDouble(e.get("sumBalance").toString().replace(",",""))));
3.对数据进行过滤
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
//使用stream流进行过滤
dataList.stream().filter(map -> (Integer) map.get("age") > 25).forEach(map -> {
System.out.println("id:" + map.get("id") + ",name:" + map.get("name"));
});
List<Map<String, Object>> extCardInfoList= xxxMapper.selectInfo(pars);
//遍历循环其中的某一个值并重新赋值
extCardInfoList .stream().forEach(item -> item.put("sumBalance",Double.parseDouble(item.get("sumBalance").toString())*0.01));
对象的处理
//待处理数据
List<McProduct> mcProductList = mcProductService.list();
//提取一个新的对象数据并修改其中的一个值,提取一个新的list
List<McProduct> mcProducts = mcProductList.stream()
.map(product -> {
product.setCategoryId(mcCategory.getCategoryId());
return product;
}).collect(Collectors.toList());