在 Java 中,可以使用map()方法将流中的元素转换为其他类型。map()方法接受一个Function函数作为参数,该函数用于将流中的每个元素转换为另一种类型。下面是一个示例:

List<String> strings = Arrays.asList("1", "2", "3");
List<Integer> integers = strings.stream()
                                .map(Integer::valueOf)
                                .collect(Collectors.toList());
System.out.println(integers); // 输出: [1, 2, 3]

在上面的示例中,我们首先创建了一个包含字符串元素的列表strings。然后,我们使用stream()方法将列表转换为一个流。接下来,我们使用map()方法将流中的每个字符串元素转换为对应的整数类型。最后,我们使用collect()方法将流中的元素收集到一个列表中。

map()方法中,我们使用了Integer::valueOf方法作为参数,该方法将字符串转换为整数。这是一种简洁的方式,可以使用方法引用来代替lambda表达式。

除了使用map()方法,还可以使用flatMap()方法来进行类型转换。flatMap()方法类似于map()方法,但是它可以将一个流中的元素转换为多个元素。这在某些情况下非常有用。下面是一个示例:

List<String> strings = Arrays.asList("Hello", "World");
List<Character> characters = strings.stream()
                                    .flatMap(str -> str.chars().mapToObj(ch -> (char) ch))
                                    .collect(Collectors.toList());
System.out.println(characters); // 输出: [H, e, l, l, o, W, o, r, l, d]

在上面的示例中,我们首先创建了一个包含字符串元素的列表strings。然后,我们使用stream()方法将列表转换为一个流。接下来,我们使用flatMap()方法将流中的每个字符串元素转换为对应的字符流。最后,我们使用collect()方法将流中的元素收集到一个列表中。

flatMap()方法中,我们使用了lambda表达式str -> str.chars().mapToObj(ch -> (char) ch)作为参数。该lambda表达式将字符串转换为字符流,并将每个字符转换为Character类型。

总的来说,可以使用map()方法将流中的元素转换为其他类型,或者使用flatMap()方法将流中的元素转换为多个元素。这些方法提供了灵活和强大的功能,可以满足不同的需求。

Java Stream() 元素对象类型转换:map() 和 flatMap() 方法详解

原文地址: https://www.cveoy.top/t/topic/pRDF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录