如果key没有重复,那么map的key-value大概是属于一对一的结构,如果key有重复,但是如果这是因为业务数据造成的重复,说明可能key-value就应该是一对多的关系,那么可以参考如下的示例代码:
/**
* 一个简单的把用户集合转换成(名称-用户)的map,所以用户可能有多个
*
* @param userInfoList
* @return
*/
public Map<String, List<UserInfo>> getMap(List<UserInfo> userInfoList) {
Map<String, List<UserInfo>> map = new HashMap();
//循环用户集合,如果能在map里找到相同名称的value,那么就往上叠加,否则初始化相应的key-value
for (UserInfo userInfo : userInfoList) {
List<UserInfo> list = map.get(userInfo.getUserName());
if (CollectionUtils.isEmpty(list)) {
List<UserInfo> list1 = new ArrayList<>();
list1.add(userInfo);
map.put(userInfo.getUserName(), list1);
} else {
list.add(userInfo);
map.put(userInfo.getUserName(), list);
}
}
return map;
}
转换list为map时,key值有重复,有时可能状态不好,反应不过来,思路依旧死磕在key-value是一对一的这个逻辑上,这时候希望这篇博客能提供些思路。