Stream流的中间操作_map和mapToInt
IntStream mapToInt(ToIntFunction mapper):返回一个IntStream其中包含将给定函数应用于此流的元素的结果 上面那行的IntStream表示初始int流。其中ToIntFunction接口中有一个applyAsInt即int applyAsInt(T value),该方法根据T类型的参数得到一个int类型的结果
Stream流的中间操作_map和mapToInt的练习
xxxxxxxxxx
package ch26;
import java.util.ArrayList;
public class a_7_1测试 {
public static void main(String[] args) {
//创建一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("10");
list.add("20");
list.add("30");
list.add("40");
list.add("50");
//--------------------------------------------------------------------------------------------
//需求:将集合中的字符串数据转换为整数之后在控制台输出。使用map方法来实现
list.stream().map(s->Integer.parseInt(s)).forEach(System.out::println);//得到流,调用map方法,字符串转为int,控制台输出
System.out.println("---------");
//使用方法引用优化一下上面那行
list.stream().map(Integer::parseInt).forEach(System.out::println);
System.out.println("--------------------");
//--------------------------------------------------------------------------------------------
//需求:将集合中的字符串数据转换为整数之后在控制台输出。使用mapToInt方法来实现
list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
System.out.println("--------------------");
//---------------------------------------------------------------------------------------------
//注意:还有进一步的学习,就是mapToInt方法的返回值是IntStream接口类型的
//IntStream接口支持顺序和并行聚合操作的原始int值元素序列,IntStream接口里面有一个sum()方法,sum方法返回的是此流中元素的总和,返回值是int类型
//怎么用IntStream接口中的sum方法呢,如下
//需求:计算集合中的数字字符串的数据总和
int result = list.stream().mapToInt(Integer::parseInt).sum();
//调用mapToInt方法把集合中的数据转为int类型之后就会得到IntStream接口类型的数据,再调用sum方法返回一个int类型的值result
System.out.println(result);
//注意sum方法是IntStream接口才有的,stream接口是没有的,所以只能通过IntStream接口或IntStream接口类型才能调用sum方法
}
}