我有List<Map<key,value>>
。如果密钥存在于List
例如:
输入:List<Map<a,1>,Map<b,2>,Map<c,3>>
(此处为地图),List<a,d,e>
说明:由于<a,1>
中存在地图List<a,d,e>
中的键,我想从List<Map<a,1>,Map<b,2>,Map<c,3>>
中删除地图
输出:List<Map<b,2>,Map<c,3>>
答案 0 :(得分:0)
也许您可以使用java stream api,并执行以下操作:
public class Mapping {
public static void main(String args[])
{
List<Map<String,Integer>> db = new LinkedList<Map<String,Integer>>();
Map<String,Integer> item = new HashMap<String,Integer>();
item.put("a", 1);
item.put("b", 2);
item.put("c", 3);
db.add(item);
List<String> excludeList = Arrays.asList("a");
List<Map<String,Integer>> newDb = db.stream().map(sample->{
Map<String,Integer> newSample = new HashMap<String,Integer>(sample); //we do not mutate original elements
excludeList.forEach(key->newSample.remove(key));
return newSample;
}).collect(Collectors.toList());
System.out.println(db); //[{a=1, b=2, c=3
System.out.println(newDb); //[{b=2, c=3}]
}
}
以这种方式,您保留原始和新的过滤列表
答案 1 :(得分:0)
如果要使用地图列表检查排除键
,请尝试此操作public static void main(String[] args)
{
List<String> removeList = Arrays.asList("a","d","e");
List<Map<String, Integer>> maps = new ArrayList<>();
//Map1
Map<String, Integer> map1 = new HashMap<>();
map1.put("a", 1);
map1.put("b", 2);
map1.put("c", 3);
maps.add(map1);
//Map2
Map<String, Integer> map2 = new HashMap<>();
map2.put("e", 1);
map2.put("f", 2);
map2.put("g", 3);
maps.add(map2);
for(String string : removeList)
{
for(Map<String, Integer> eachMap: maps)
{
eachMap.remove(string);
}
}
System.out.println(maps);
}