Arrays.asList创建的的集合不可再进行修改操作

代码含义:
定义一个ID和用户名关系字典,但是用户名可以有多个,所以key为ID,value为用户名list
首先map为空,遍历所有的信息
如果id匹配,查询对应的list,如果list为空,则新建一个list
如果不为空,则把用户名加到list中,更新value的list

但是会报错UnsupportedOperationException

private static Map<String, List<String>> idNamesMap = new HashMap<>();

List<String> names = idNamesMap.get(idNum);
if (names == null || names.isEmpty()) {
    idNamesMap.put(idNum, Arrays.asList(userName));
} else {
    names.add(userName);
    idNamesMap.put(idNum, names);
}

这是因为Arrays.asList()方法返回的是Arrays类的一个内部嵌套类ArrayList,这里的ArrayList和直接new出来的不一样,是不支持任何修改操作的,一旦修改就会抛出UnsupportedOperationException这一异常。

你可能感兴趣的:(java,数据结构)