List<GdsStockResult> list = new ArrayList();
GdsStockResult result = new GdsStockResult();
result.setIsbn("123456");
result.setChnlCode(null);
result.setStock(50L);
list.add(result);
GdsStockResult result2 = new GdsStockResult();
result2.setIsbn("123456");
result2.setChnlCode("V100");
result2.setStock(100L);
list.add(result2);
GdsStockResult result3 = new GdsStockResult();
result3.setIsbn("1234567895");
result3.setChnlCode("V100");
result3.setStock(3L);
list.add(result3);
GdsStockResult result4 = new GdsStockResult();
result4.setIsbn("1234568");
result4.setChnlCode("V100");
result4.setStock(10L);
list.add(result4);
想根据isbn去统计一下
最后结果会是:123456 2次 1234567895 1次 1234568 1次
HashMap<String, Integer> m = new HashMap<>();
TcUser t = new TcUser(2, "张三", "");
TcUser t1 = new TcUser(1, "李四", "");
TcUser t2 = new TcUser(1, "张三", "");
TcUser t3 = new TcUser(1, "李四", "");
TcUser t4 = new TcUser(1, "李四", "");
TcUser t5 = new TcUser(1, "王五", "");
TcUser t6 = new TcUser(1, "张三", "");
List<TcUser> usersList = new ArrayList<>();
usersList.add(t);
usersList.add(t1);
usersList.add(t2);
usersList.add(t3);
usersList.add(t4);
usersList.add(t5);
usersList.add(t6);
usersList.forEach(f -> {
m.merge(f.getUsername(), 1, Integer::sum);
});
Map<String, Long> collect1 = usersList.stream().collect(Collectors.groupingBy(TcUser::getUsername, Collectors.counting()));
System.out.println(m);
System.out.println(collect1);
两种方案,TcUser就一实体
嗯,這樣試試
list.stream().collect(Collectors.groupingBy(GdsStockResult::getIsbn));
循环取出GdsStockResult对象用getIsbn() 方法获取isbn
用list分组统计。
java8很好写,分组map,然后遍历map,key就是123456 ,value.size()就是几次,分组代码:
Map<String,List<GdsStockResult>> map= new HashMap<>();
list.stream().collect(Collectors.groupingBy(GdsStockResult::getIsbn,Collectors.toList()))
.forEach(map::put);
Map<String,List<GdsStockResult>> listMap= list.stream().collect(Collectors.groupingBy(GdsStockResult::getIsbn));
listMap.forEach((item,value)->{
System.out.println(item+" "+value.size()+"次");
});
这样试试 如果能帮到你,请点击下【采纳】,谢谢