list.tream中 list转map
时间: 2023-12-08 14:38:33 浏览: 26
在Java中,可以使用`stream()`方法将List转换为Stream,然后使用`collect()`方法将其转换为Map。下面是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange");
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(s -> s, String::length));
System.out.println(map);
}
}
```
在上面的示例中,我们首先创建了一个包含三个字符串的List。然后,我们使用`stream()`方法将其转换为Stream。接下来,我们使用`collect()`方法将其转换为Map。在`toMap()`方法中,第一个参数是键的映射函数,第二个参数是值的映射函数。在这个例子中,我们使用字符串本身作为键,使用字符串长度作为值。最后,我们打印出了生成的Map。
相关问题
tream的groupby怎么固定map的顺序
在使用Stream的groupby进行分组操作时,如果需要固定map的顺序,可以使用LinkedHashMap来保存分组结果。LinkedHashMap是一种有序的HashMap,它会按照元素插入的顺序进行排序,因此可以保证分组结果的顺序固定。
具体实现可以在groupby操作后,使用Collectors.toMap()方法,指定第三个参数为LinkedHashMap::new,即可生成一个有序的Map。示例代码如下:
```
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "pear", "peach", "kiwi");
Map<Integer, List<String>> map = list.stream()
.collect(Collectors.groupingBy(String::length, LinkedHashMap::new, Collectors.toList()));
System.out.println(map);
}
}
```
输出结果为:
```
{5=[apple, peach], 6=[banana, orange], 4=[pear], 3=[kiwi]}
```
可以看到,分组结果的顺序与元素插入的顺序一致。
tream().collect什么意思
stream().collect() 是 Java 8 中的一种操作,用于将一个 Stream 对象中的元素收集到一个集合中。这个操作会创建一个新的集合,并将 Stream 中的元素添加到集合中。collect() 方法接受一个 Collector 对象作为参数,该对象定义了如何将元素收集到集合中。常见的 Collector 包括 Collectors.toList()、Collectors.toSet() 和 Collectors.toMap() 等。