通过stream流将List转为Map
时间: 2023-03-23 12:04:18 浏览: 127
可以使用Java 8中的Stream API来将List转为Map。具体实现可以使用Collectors.toMap()方法,该方法接受两个参数,第一个参数是用于生成Map的键的函数,第二个参数是用于生成Map的值的函数。例如:
List<String> list = Arrays.asList("apple", "banana", "orange");
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length));
这个例子中,我们将List中的字符串作为Map的键,字符串的长度作为Map的值。
相关问题
使用stream流 将list 转为map,key相等时 value 累加
可以使用Java 8中的stream流来将list转为map,并且在key相等时将value累加。具体代码如下:
```
List<String> list = Arrays.asList("apple", "banana", "orange", "apple", "orange");
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(Function.identity(), v -> 1, Integer::sum));
System.out.println(map);
```
输出结果为:{orange=2, banana=1, apple=2}
这段代码将list中的元素作为key,初始值为1作为value,使用Integer::sum函数将相同key的value值累加。
通过stream流将list<map<string,object>>分组转为map<map<string,object>>
可以使用Java 8的Stream流来将list<map<string,object>>分组转换为map<map<string,object>>。以下是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", "value2");
map1.put("key3", "value3");
Map<String, Object> map2 = new HashMap<>();
map2.put("key1", "value4");
map2.put("key2", "value5");
map2.put("key3", "value6");
list.add(map1);
list.add(map2);
Map<Map<String, Object>, List<Map<String, Object>>> groupedMap = list.stream()
.collect(Collectors.groupingBy(map -> {
Map<String, Object> groupedKeyMap = new HashMap<>();
groupedKeyMap.put("key1", map.get("key1"));
return groupedKeyMap;
}));
System.out.println(groupedMap);
}
}
```
在这个例子中,我们使用`Collectors.groupingBy`方法来根据指定的键进行分组。我们创建一个新的`Map<String, Object>`作为分组的键,然后使用它来创建包含相应分组的`Map<Map<String, Object>, List<Map<String, Object>>>`。最后,我们打印出分组后的结果。
请注意,这只是一个示例代码,具体实现可能需要根据实际需求进行调整。
阅读全文