stream tomap
时间: 2023-07-20 19:31:39 浏览: 57
`Stream` 的 `toMap` 方法可以将一个流中的元素转换为一个 `Map` 对象。它需要两个参数:一个用于指定如何提取键的函数,一个用于指定如何提取值的函数。例如:
```java
List<String> list = Arrays.asList("apple", "banana", "cherry", "date");
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length));
System.out.println(map);
```
运行结果:
```
{apple=5, banana=6, cherry=6, date=4}
```
在这个例子中,我们使用 `Function.identity()` 提取了流中的每个元素作为键,使用 `String::length` 提取了每个元素的长度作为值,最终将这些键值对收集到了一个 `Map` 对象中。
相关问题
stream to map
在Java中,stream可以通过collect方法转换成Map。下面是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> fruits = List.of("apple", "banana", "orange");
Map<String, Integer> fruitLengthMap = fruits.stream()
.collect(Collectors.toMap(
fruit -> fruit,
fruit -> fruit.length()
));
System.out.println(fruitLengthMap); }
}
```
输出结果为:`{orange=6, apple=5, banana=6}`
stream toMap排序
你可以使用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了。请注意,如果存在重复的键,可以使用合适的合并函数来处理冲突。
阅读全文