Map<String,A>B,List<String>C,删除B中不存在于C的key值
时间: 2024-12-08 14:20:39 浏览: 16
如果你有一个Map<String, A> B,以及一个List
Map<String, A> B = ...; // 原始Map B
List<String> C = ...; // 列表C
Map<String, A> filteredMap = B.entrySet().stream()
.filter(entry -> C.contains(entry.getKey())) // 检查key是否在C中
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue, // 直接复制键值对
(oldEntry, newEntry) -> oldEntry // 如果键冲突,保留旧的键值对
));
// 现在filteredMap只包含B中键存在于C中的元素
相关问题
List<Map<String, Object>> 遍历
List<Map<String, Object>> 是一个由 Map<String, Object> 组成的列表,每个 Map<String, Object> 都表示一个键值对,其中键为 String 类型,值为 Object 类型。
要遍历 List<Map<String, Object>>,可以使用 for 循环来遍历列表中的每个元素,然后再使用 for-each 循环遍历每个 Map<String, Object> 中的键值对。
示例代码如下:
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// 添加元素
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("name", "张三");
map1.put("age", 20);
list.add(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "李四");
map2.put("age", 25);
list.add(map2);
// 遍历元素
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
// 遍历键值对
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + ": " + value);
}
}
输出结果为:
name: 张三
age: 20
name: 李四
age: 25
在遍历时,可以根据需要对每个键值对进行处理,例如将值转换为特定的类型或进行其他操作。
遍历Map<String,List<File>>
可以使用Java 8的Stream API来遍历Map<String,List
Map<String, List<File>> fileMap = new HashMap<>();
// 假设已经初始化了fileMap
fileMap.entrySet().stream()
.forEach(entry -> {
String key = entry.getKey();
List<File> fileList = entry.getValue();
System.out.println("Key: " + key);
System.out.println("Files:");
fileList.forEach(file -> System.out.println("\t" + file.getName()));
});
这段代码使用entrySet()
方法获取Map的所有键值对,然后通过Stream API进行遍历,对于每一个键值对,获取键和值,然后输出到控制台。其中,对于值的遍历使用了forEach()
方法和Lambda表达式,更加简洁易懂。
相关推荐
















