我有一个Map类型的变量
Map<AiTile, List<AiTile>> result = new HashMap<AiTile, List<AiTile>>();
Run Code Online (Sandbox Code Playgroud)
例如; 我在地图内部推了几个AiTile-List然后用方法'clear'擦除List的内容.当我删除列表的内容时,我想保护地图的内容,我该怎么办?
Map.put(key, value)添加对列表的引用,而不是实际的列表内容.如果我理解正确,您希望在地图中保留旧的列表值并删除原始列表的内容.
您可能希望将原始列表的副本添加到地图中,而不是引用.例如:
map.put(key, new ArrayList<AiTile>(originalList));
Run Code Online (Sandbox Code Playgroud)
如果您想将关键值对添加到地图中,只有它们尚未存在并更新地图中已有的列表,请使用map.contains(key)和list.addAll(anotherList):
// if no key is present
if (!map.containsKey(key)) {
// add key value pair
map.put(key, value);
} else {
// get the current list out of the map
// and merge it with the new one
map.get(key).addAll(value);
}
Run Code Online (Sandbox Code Playgroud)
NOTE:根据定义,Lists可以包含重复项.如果要合并两个列表之间的所有项目以使它们不包含重复项,您可能需要查看Sets.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |