Collectors.groupingBy转换为LinkedHashMap
时间: 2023-10-12 09:07:49 浏览: 222
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
要将`Collectors.groupingBy`的结果转换为`LinkedHashMap`,可以使用`Collectors.toMap`并指定一个`LinkedHashMap`作为目标 map 类型。下面是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
Map<Character, List<String>> result = fruits.stream()
.collect(Collectors.groupingBy(s -> s.charAt(0)));
LinkedHashMap<Character, List<String>> linkedHashMap = result.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new
));
System.out.println(linkedHashMap);
}
}
```
输出结果:
```
{a=[apple], b=[banana], c=[cherry], d=[date], e=[elderberry]}
```
在上面的示例代码中,我们首先使用`Collectors.groupingBy`按照首字母进行分组,得到一个普通的`HashMap`。然后,我们通过对该`HashMap`的`entrySet()`进行排序,并使用`Collectors.toMap`将其转换为`LinkedHashMap`,保留了插入顺序。
请注意,`Collectors.toMap`方法的最后一个参数是一个 `LinkedHashMap::new` 方法引用,它用于创建目标 map 实例。
阅读全文