使用Map集合打印出字符串对象中相同的对象次数

有如下字符串,里面包含多个用户信息数据,现在需要你解析这个字符串,获取里面的用户数据,
并封装到User对象中,多个User对象在添加到List 集合中
String userStrs =
"10001:张三:男:1990-01-01#
10002:李四:女:1989-01-09#
10003:王五:男:1999-09-09#
10004:刘备:男:1899-01-01#
10005:孙悟空:男:1900-01-01
#10006:张三:女:1999-01-01#
10007:刘备:女:1999-01-01#
10008:张三:女:2003-07-01#
10009:猪八戒:男:1900-01-01";
遍历上面获取的List 集合,统计里面每个名字出现的次数。
封装到Map集合中,集合的key就是名字,value就是名字出现的次数。
最后遍历打印map数据,打印内容如下:
张三:3次
李四:5次


    /**
     * 获取集合里重复出现的元素及其出现次数
     *
     * @param equipmentId
     * @return
     */
    public Map<Object, Integer> getSameElement(List<Object> equipmentId) {

        //key保存值, value保存这个值出现的次数
        Map<Object, Integer> map = new HashMap<>();

        equipmentId.forEach(e -> {
            //定义一个计数器, 计算当前元素出现次数
            Integer count = 1;
            //如果当前元素在map中已经存在, 则计数器 + 1
            if (map.get(e) != null) {
                count = map.get(e) + 1;
            }
            //往map存数据
            map.put(e, count);
        });
        return map;
    }

你可以参考下这篇文章:使用Map集合统计字符串中每个数字字符串出现的次数

String userStrs =
                "10001:张三:男:1990-01-01#10002:李四:女:1989-01-09#10003:王五:男:1999-09-09#" +
                        "10004:刘备:男:1899-01-01#10005:孙悟空:男:1900-01-0#10006:张三:女:1999-01-01#" +
                        "10007:刘备:女:1999-01-01#10008:张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";
        Map<String, Long> result = Arrays.stream(userStrs.split("#"))
                .map(s -> {return s.split(":")[1];})
                .collect(Collectors.groupingBy(s->s,Collectors.counting()));

        for(Map.Entry<String,Long> entry: result.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue()+"次");
        }