stream toMap排序
时间: 2023-08-18 14:11:46 浏览: 87
你可以使用Java 8的Stream API来将Stream流转换为一个排序后的Map。下面是一个示例代码:
```java
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream<String> stream = Stream.of("apple", "banana", "cherry");
// 将Stream转换为排序后的Map
Map<String, Integer> sortedMap = stream
.sorted(Comparator.naturalOrder())
.collect(Collectors.toMap(
fruit -> fruit,
fruit -> fruit.length(),
(oldValue, newValue) -> newValue,
LinkedHashMap::new
));
// 打印排序后的Map
sortedMap.forEach((fruit, length) -> System.out.println(fruit + ": " + length));
}
}
```
在上面的示例中,我们使用`sorted`方法来对Stream进行排序,然后使用`collect`方法将排序后的元素收集到一个Map中。在`collect`方法中,我们使用`toMap`方法指定了键和值的映射关系,并指定了一个`LinkedHashMap`用于保持元素的插入顺序。
输出结果将是:
```
apple: 5
banana: 6
cherry: 6
```
这样你就可以使用Stream流的`toMap`方法来对元素进行排序并生成一个Map了。请注意,如果存在重复的键,可以使用合适的合并函数来处理冲突。
阅读全文