Map<String,String> map=request.getParameterMap();
^是不可修改的地图。
Set s1= map.keySet();
Set s2= map2.keySet();/* another keyset of local map*/
使用
s1.retainAll(s2)
会引发异常:at java.util.collections$unmodifiablecollection.retainall
这里
request.getParameterMap()
返回一个不可修改的地图。我尝试创建本地地图。但是问题仍然存在。建议一些解决方案。
最佳答案
您不允许修改不可修改映射的键集,因为返回的键集也是unmodifiableSet。您可以从unmodifiableMap创建本地地图,然后在本地地图键集上使用keepAll。
Map map1 = new HashMap();
map1 = Collections.unmodifiableMap(map1);
Map map2 = new HashMap();
Map map3 = new HashMap(map1);
Set s1 = map1.keySet();
Set s2 = map2.keySet();
Set s3 = map3.keySet();
s3.retainAll(s2);