Java的Stream.map是怎么回事
时间: 2023-03-28 17:01:06 浏览: 111
Java的Stream.map是一个中间操作,它将一个流中的每个元素映射为另一个元素。具体来说,它接受一个Function作为参数,该Function将流中的每个元素映射为另一个元素,并返回一个新的流。这个新的流包含了映射后的元素。
相关问题
java.util.stream.collector
Java 8引入了java.util.stream.Collectors类,它实现了java.util.stream.Collector接口,并提供了许多方法来对流的元素执行map和reduce操作,或者进行统计操作。
以下是java.util.stream.Collectors类的一些常用方法:
1. toList():将流中的所有元素导出到一个列表中。
```java
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ToListTest {
public static void main(String[] args) {
List<String> list = Stream.of("AA", "BB", "CC").collect(Collectors.toList());
list.forEach(s -> System.out.println(s));
}
}
```
2. toSet():将流中的所有元素导出到一个集合中,去除重复元素。
```java
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ToSetTest {
public static void main(String[] args) {
Set<String> set = Stream.of("AA", "BB", "CC").collect(Collectors.toSet());
set.forEach(s -> System.out.println(s));
}
}
```
3. toMap():将流中的元素导出到一个Map中,可以指定key和value的映射关系。
```java
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ToMapTest {
public static void main(String[] args) {
Map<String, Integer> map = Stream.of("AA", "BB", "CC").collect(Collectors.toMap(s -> s, s -> s.length()));
map.forEach((k, v) -> System.out.println(k + ": " + v));
}
}
```
4. joining():将流中的元素连接成一个字符串。
```java
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class JoiningTest {
public static void main(String[] args) {
String result = Stream.of("AA", "BB", "CC").collect(Collectors.joining(", "));
System.out.println(result);
}
}
```
java stream 转map
要将Java Stream转换为Map,可以使用`Collectors.toMap()`方法。`toMap()`方法接受两个参数:一个用于指定键的函数,另一个用于指定值的函数。以下是示例代码:
```java
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// 创建一个包含字符串的Stream
Stream<String> stream = Stream.of("apple", "banana", "cat");
// 将Stream转换为Map,键为字符串,值为字符串的长度
// 如果有重复的键,则使用第一个出现的值
Map<String, Integer> map = stream.collect(Collectors.toMap(s -> s, String::length));
// 打印Map
System.out.println(map);
}
}
```
输出结果将是:
```
{apple=5, banana=6, cat=3}
```
在上面的示例中,我们将Stream的每个元素作为键,并使用`String::length`方法计算每个元素的长度作为对应的值。如果Stream中有重复的键,`toMap()`方法将使用第一个出现的值。
阅读全文