import java.util.*;importjava.util.stream.Collectors;importjava.util.stream.IntStream;importjava.util.stream.Stream;/*** @program: FirstDemo
* @description: Stream学习
*@author: GuoTong
* @create: 2020-08-26 11:52
**/
public classStreamTest {public static voidmain(String[] args) {
List list = new ArrayList<>();
list.add(10);
list.add(72);
list.add(35);
list.add(-15);
list.add(35);//1.创造流//使用集合产生stream流:串行流
Stream stream = list.stream();//普通流,//使用集合产生stream流:并行流//Stream integerStream = list.parallelStream();//流的产生方式3//Stream stream1 = Stream.of("abc", "yyy", "hhh");//流的产生方式,迭代器//筛选和切片//。需求,筛选/过滤出大于0的数 filter//stream.filter(i -> i > 0).forEach(System.out::println);//。需求,去除重复 distinct 注意:如果是对象:那这个类必须重写equals和hashCode//stream.distinct().forEach(System.out::println);//需求,先去除重复,然后赛选出大于的数。注意流可以链式执行//stream.distinct().filter(i -> i >= 0).forEach(System.out::println);//需求。取出前三个元素//stream.limit(3L).forEach(System.out::println);//需求。跳过前两个元素,把后面的元素取出来//stream.skip(2L).forEach(System.out::println);//需求,让每一个元素乘以2,得到每一个元素乘以2的集合//stream.map(i -> i * 2).forEach(System.out::println);//排序,自然排序 升序//stream.sorted().forEach(i-> System.out.print(i+"\t"));//比较器排序:降序//stream.sorted((i1,i2)->i2-i1).forEach(i-> System.out.print(i+"\t"));//判断集合中的每一个元素,是否都大于0//System.out.println(stream.allMatch(x -> x > 0));//判断集合中至少有一个大于零的数//System.out.println(stream.anyMatch(x -> x > 0));//得到第一个元素||德奥当前流的任意元素
/*Optional first = stream.findFirst();
Integer integer1 = first.get();
System.out.println(integer1);*/
/*Optional any = stream.findAny();
Integer integer = any.get();
System.out.println(integer);*/
/*//最大值||最小值||总数
System.out.println("流中个数"+list.stream().count());
// System.out.println("流中元素最大值:"+list.stream().max((i1,i2)->i1-i2).get());
System.out.println("流中元素最大值:"+list.stream().max(Integer::compareTo).get());
//System.out.println("流中元素最小值:"+list.stream().min((i1,i2)->i1-i2).get());
System.out.println("流中元素最小值:"+list.stream().min(Integer::compareTo).get());*/
//规约 1//System.out.println(stream.reduce((i1, i2) -> i1 + i2).get());//归约 2//System.out.println(stream.reduce(10,(i1, i2) -> i1 + i2));//收集成一个集合//Set collect = stream.filter(i -> i > 0).collect(Collectors.toSet());//List collect1 = stream.filter(i -> i > 0).collect(Collectors.toList());//迭代器产生流求1-100和//Integer integer = Stream.iterate(1, i -> i+1).limit(100L).reduce((i1, i2) -> i1 + i2).get();//System.out.println(integer);//2.流的使用//3.关闭流
}//流里面放流,把多个流合成一个流
public voidgetTwoStream() {
IntStream stream1= Arrays.stream(new int[]{1, 2, 3, 4, 6});
IntStream stream2= Arrays.stream(new int[]{3, 7, 8, 5, 9});
Stream stream =Stream.of(stream1, stream2);//把几个流变成一个流:
stream.flatMapToInt(s -> s.map(i ->i)).forEach(System.out::println);
}
}