求数组的最大值、最小值、和... 等

在Java中,基本类型流只支持int、long、double三种类型.
一是可以通过IntSream.range方法创建
二是通过Arrays.stream( )中传入一个基本类型的数组进行创建

int[] nums = {1, 2, 3};
int max = Arrays.stream(nums).max().getAsInt();
int sum = Arrays.stream(nums).sum();
// 类似于python的reduce函数,提供一个二元运算符
int reduce = Arrays.stream(nums).reduce(1, (x, y) -> x * y);  // 6,所有数之积
int orelse = Arrays.stream(nums).reduce((x, y) -> x * y).orElse(0);

Arrays.stream(nums).max()返回的是一个Optinal<int>对象,因为流可能是空的,所以getAsInt方法可能会报错,因此Optinal<int>对象提供了一个orElse(int default)方法去处理这种情况。类似于python的max(nums, default=0)。而流是空的时候sum方法不会出现问题。

如果Optional装载的泛型类不是基本类型,那么就通过get方法去获得变量的值

列表筛选

List<String> ss = new ArrayList<String>(Arrays.asList("ab", "bb"));
ss = ss.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
List<Boolean> tt = ss.stream().map(String::isEmpty).collect(Collectors.toList());
ist<Integer> ll = ss.stream().map(String::length).collect(Collectors.toList());
// collect() 方法接受stream数据并转换类型