碰到key有重复的map怎么处理

如果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是一对一的这个逻辑上,这时候希望这篇博客能提供些思路。

你可能感兴趣的:(Java开发)