有如下字符串,里面包含多个用户信息数据,现在需要你解析这个字符串,获取里面的用户数据,
并封装到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
最后遍历打印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()+"次");
}