- IntStream mapToInt(ToIntFunction <? super T > mapper )
- 返回一个IntStream由将给定函数应用于此流的元素的结果组成
- 参数:映射器——应用于每个元素的非干扰的、无状态的函数
- 返回:新流
IntStream中的 sum()方法
- int sum()
- 返回此流中元素的总和,这是一个简化的特殊情况,相当于return reduce(0,Integer::sum)
- 这是一个终端操作
- 返回:流中元素的和
package com.csdn.Stream2; import java.util.ArrayList; import java.util.Collections; import java.util.function.Function; public class StreamMapToInt { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); Collections.addAll(list, "10", "20", "30", "40", "50"); //将集合中的字符串数据转换为整数之后在控制台输出 // list.stream().map(new Function<String, Integer>() { // @Override // public Integer apply(String s) { // return Integer.parseInt(s); // } // }).forEach(System.out::println); // list.stream().map(s -> Integer.parseInt(s)).forEach(System.out::println); list.stream().map(Integer::parseInt).forEach(System.out::println);//10 20 30 40 50 int sum = list.stream().mapToInt(Integer::parseInt).sum(); System.out.println(sum);//150 } }
在Java的Stream API中,
mapToInt()
是IntStream
的一个工厂方法,它通常用于将一个对象流(Stream<T>
)转换为一个原始整数流(IntStream
)。这个方法特别有用,当你处理的对象流中的元素可以被转换(或映射)为整数,并且你希望利用为原始数据类型流(如IntStream
、LongStream
和DoubleStream
)提供的特殊优化时。
mapToInt()
方法接受一个ToIntFunction<? super T>
类型的参数,这是一个函数式接口,用于将流中的每个元素转换为整数。下面是一个简单的示例,展示如何使用
mapToInt()
方法:import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; public class MapToIntExample { public static void main(String[] args) { List<String> numbersAsStrings = Arrays.asList("1", "2", "3", "4", "5"); // 使用 mapToInt 将字符串转换为整数流 IntStream intStream = numbersAsStrings.stream() .mapToInt(Integer::parseInt); // 使用 intStream 进行操作,例如求和 int sum = intStream.sum(); System.out.println("Sum of numbers: " + sum); // 输出:Sum of numbers: 15 // 或者,如果你需要将 IntStream 转换回 List<Integer>,你需要稍微绕一下弯 List<Integer> numbers = intStream.boxed() // 将 int 转换为 Integer .collect(Collectors.toList()); // 收集到 List 中 System.out.println(numbers); // 输出:[1, 2, 3, 4, 5] } }
在这个示例中,我们有一个包含字符串的列表,这些字符串实际上是数字的文本表示。我们使用mapToInt()
和Integer::parseInt
方法将每个字符串转换为整数,并创建一个IntStream
。然后,我们可以对这个IntStream
进行各种操作,如求和。如果需要将IntStream
转换回包含Integer
对象的列表,我们需要先使用boxed()
方法将每个int
转换为Integer
,然后使用collect()
方法将其收集到列表中。
Stream流中的 mapToInt()方法
于 2023-10-16 23:14:09 首次发布