Java 如果键属于列表中,则从映射列表中删除
我有一张单子。如果列表中存在密钥,我想将其从列表中删除 例如: 输入:列表这里是一个地图,列表 说明:由于列表中存在键映射,因此我想从列表中删除映射Java 如果键属于列表中,则从映射列表中删除,java,spring,Java,Spring,我有一张单子。如果列表中存在密钥,我想将其从列表中删除 例如: 输入:列表这里是一个地图,列表 说明:由于列表中存在键映射,因此我想从列表中删除映射 输出:List也许您可以使用java streams api,并执行如下操作: public class Mapping { public static void main(String args[]) { List<Map<String,Integer>> db = new LinkedL
输出:List也许您可以使用java streams 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}]
}
}
通过这种方式,您可以同时保留原始和新的筛选列表如果您想在地图列表中选中排除键,请尝试此操作
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);
}
您的问题非常不清楚,没有像您在描述中所写的那样详细说明map。请通过列出代码正确列出您的问题。请使您的问题更加清楚,因为混淆导致此列表等于列表。在您的案例列表中,将有类似列表的地图列表