泛型为对象的List根据某一个属性统计对应的次数


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()+"次");
        });

这样试试 如果能帮到你,请点击下【采纳】,谢谢