mapToInt
方法的基本用法
mapToInt
方法接收一个ToIntFunction<? super T>
类型的参数,这是一个函数式接口,定义了一个applyAsInt(T value)
方法,该方法接受一个泛型参数T
并返回一个int
类型的值。通过这个接口,我们可以将流中的每个元素转换(或映射)为int
类型。
使用场景
mapToInt
方法的使用场景非常广泛,包括但不限于以下几种情况:
-
将字符串集合中的元素转换为整数:当集合中包含的是数字的字符串表示时,可以使用
mapToInt
方法结合Integer::parseInt
方法将这些字符串转换为整数。 -
获取对象集合中某个属性的整数值:假设有一个对象集合,每个对象都有一个可以转换为整数的属性(如年龄、长度等),可以使用
mapToInt
方法结合属性访问方法(如Person::getAge
)来获取这些整数值。 -
计算字符串长度:对于字符串集合,可以使用
mapToInt
方法结合String::length
方法来获取每个字符串的长度。
示例代码
以下是几个使用mapToInt
方法的示例:
-
将字符串集合中的元素转换为整数
List<String> numbersAsStrings = Arrays.asList("1", "2", "3", "4", "5"); IntStream intStream = numbersAsStrings.stream().mapToInt(Integer::parseInt); int sum = intStream.sum(); System.out.println("Sum of numbers: " + sum); // 输出: Sum of numbers: 15
-
获取对象集合中某个属性的整数值:
class Person { private int age; public Person(int age) { this.age = age; } public int getAge() { return age; } } List<Person> people = Arrays.asList(new Person(20), new Person(30), new Person(40)); IntStream ageStream = people.stream().mapToInt(Person::getAge); ageStream.forEach(System.out::println); // 输出每个人的年龄
-
计算字符串长度:
List<String> words = Arrays.asList("Apple", "Banana", "Orange"); IntStream lengthStream = words.stream().mapToInt(String::length); lengthStream.forEach(System.out::println); // 输出每个单词的长度