java stream流,两个map,取出相同的key
时间: 2023-07-08 21:38:30 浏览: 80
可以使用Java 8中的Stream API来实现。我们可以通过Stream的filter方法过滤出两个Map中相同的key,然后将这些key收集到一个新的集合中。
示例代码如下:
Map<String, Integer> map1 = new HashMap<>();
map1.put("a", 1);
map1.put("b", 2);
map1.put("c", 3);
Map<String, Integer> map2 = new HashMap<>();
map2.put("b", 4);
map2.put("c", 5);
map2.put("d", 6);
Set<String> commonKeys = map1.keySet().stream()
.filter(map2::containsKey)
.collect(Collectors.toSet());
System.out.println(commonKeys); // 输出 [b, c]
在上面的示例代码中,我们首先使用Stream的filter方法过滤出map1中与map2中相同的key,然后使用Stream的collect方法将这些key收集到一个Set中。最后,我们将这个Set输出到控制台上。
相关问题
java中对两个list<map>进行对比,根据两个主键是否相同将另外一个list<Map>的数据放在另一个list<Map>中用stream流的方式进行
在 Java 中,如果你想使用 Stream 流来对比两个 List
List<Map<String, Object>> list1 = ...; // 第一个 List<Map>
List<Map<String, Object>> list2 = ...; // 第二个 List<Map>
// 使用 Stream 对比并收集到新的 List<Map>
List<Map<String, Object>> mergedList = list1.stream()
.collect(Collectors.toMap(
map1 -> (String) map1.get("key"), // 主键作为 key
Function.identity(), // 将原始 map 作为值直接映射
(oldValue, newValue) -> oldValue, // 当键已存在时,保留旧值
LinkedHashMap::new // 使用 LinkedHashMap 保持插入顺序
))
.values(); // 取出所有合并后的值
// 然后再使用 filter 和 merge 来添加第二个列表中缺失的主键
mergedList.addAll(list2.stream()
.filter(map2 -> !mergedList.containsKey(map2.get("key"))) // 检查是否已经存在于新列表中
.map(map2 -> {
String key = (String) map2.get("key");
return new HashMap<>(mergedList.getOrDefault(key, new HashMap<>())) // 如果不存在,则使用默认值创建新 map 并合并
.putAll(map2); // 合并两个 map
})
.collect(Collectors.toList()));
java stream 取出班级id作为key, 班级名称作为value 转换成Map
在Java Stream API中,如果你想要从一个List<Class>
列表中取出班级ID作为键,班级名称作为值,生成一个Map,可以按照以下步骤操作:
首先,假设你已经有了一个Class
类,包含了id
和name
两个字段:
class Class {
private int id;
private String name;
// 构造函数和其他方法...
}
然后,你可以使用以下代码:
List<Class> classes = ...; // 假设这是你的班级列表
Map<Integer, String> classMap = classes.stream()
.collect(Collectors.toMap(Class::getId, Class::getName));
Collectors.toMap()
方法接受两个函数作为参数:
- 第一个函数(
Function<Class, Integer>
)用于获取每个元素的关键字(在这里是id
),即Class::getId
。 - 第二个函数(
Function<Class, String>
)用于获取每个元素的值(在这里是name
),即Class::getName
。
这样就得到了一个Map,其键是班级ID,值是班级名称。
阅读全文
相关推荐
















