Stream流中的 mapToInt()方法

  • 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)。这个方法特别有用,当你处理的对象流中的元素可以被转换(或映射)为整数,并且你希望利用为原始数据类型流(如 IntStreamLongStream 和 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() 方法将其收集到列表中。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值