Map<key,value> 根据 List<key> 生成List<value> java
时间: 2023-11-11 21:58:23 浏览: 40
可以使用Java8的Stream API来实现该功能,具体代码如下:
```java
List<Key> keys = Arrays.asList(key1, key2, key3); // 假设已经有 List<Key>
Map<Key, Value> map = new HashMap<>(); // 假设已经有 Map<Key, Value>
List<Value> values = keys.stream()
.map(map::get)
.collect(Collectors.toList());
```
上述代码中,首先将输入的 `List<Key>` 转换为一个 Stream,然后使用 `map()` 方法将每个 Key 映射为其对应的 Value,最后使用 `collect()` 方法将所有 Value 收集到一个新的 List 中。其中,`map::get` 表示将每个 Key 作为参数传递给 `map.get()` 方法,使用 `::` 符号可以将方法引用转换为函数式接口。
相关问题
java 怎么解决Map<String Object>和Map<String, List<Map>>互相转换
在Java中,可以使用以下方法解决Map<String, Object>和Map<String, List<Map<String, Object>>>之间的互相转换:
1. 将Map<String, Object>转换为Map<String, List<Map<String, Object>>>:
```java
Map<String, Object> map = new HashMap<>();
// 假设map中有键值对
Map<String, List<Map<String, Object>>> convertedMap = new HashMap<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> innerMap = new HashMap<>();
innerMap.put(key, value);
list.add(innerMap);
convertedMap.put(key, list);
}
```
2. 将Map<String, List<Map<String, Object>>>转换为Map<String, Object>:
```java
Map<String, List<Map<String, Object>>> map = new HashMap<>();
// 假设map中有键值对
Map<String, Object> convertedMap = new HashMap<>();
for (Map.Entry<String, List<Map<String, Object>>> entry : map.entrySet()) {
String key = entry.getKey();
List<Map<String, Object>> list = entry.getValue();
if (list.size() > 0) {
Map<String, Object> innerMap = list.get(0);
Object value = innerMap.get(key);
convertedMap.put(key, value);
}
}
```
获取List<map<>>中的value
可以通过遍历List中的每个map,然后通过key获取对应的value。示例代码如下:
```java
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "Alice");
map1.put("age", 20);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "Bob");
map2.put("age", 25);
list.add(map2);
// 遍历List中的每个map
for (Map<String, Object> map : list) {
// 通过key获取对应的value
String name = (String) map.get("name");
int age = (int) map.get("age");
System.out.println("name: " + name + ", age: " + age);
}
```
输出结果为:
```
name: Alice, age: 20
name: Bob, age: 25
```