stream的创建方式
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
System.out.println(list);
System.out.println("------------------");
//1.通过collection创建stream
list.stream().forEach((li) -> {
System.out.println(li);
});
System.out.println("------------------");
//方法的引用:
//实体对象:成员方法
list.stream().forEach(System.out::println);
System.out.println("------------------");
//多线程创建的流
list.parallelStream().forEach(System.out::println);
System.out.println("------------------");
//通过Array数组创建的流:
Integer[] arr={1,2,35,5};
Arrays.stream(arr).forEach(System.out::println);
System.out.println("---------------------");
//通过stream的of创建的流
Stream.of("zs","lisi").forEach(System.out::println);
System.out.println("-------------------");
//通过stream的iterate创建的流
//该流用于计算
//iterate的参数1:表示的是初始的值,参数2表示的是计算 Limit表示的是限制
Stream.iterate(3,x->x+1).limit(3).forEach(System.out::println);
System.out.println("----------------");
Stream.generate(()->new Random().nextInt(5)).limit(3).forEach(System.out::println);
}
## stream流的常见实现方式 ##
```java
List<Person> list=new ArrayList<Person>();
list.add(new Person("sunwukong", 500));
list.add(new Person("tangsen", 20));
list.add(new Person("bajie", 600));
list.add(new Person("shaseng", 660));
list.add(new Person("bajie", 600));
//1.过滤流
//名字的长度大于5
list.stream().filter(person -> person.getName().length()>5).forEach(System.out::println);
System.out.println("--------------------");
//2.跳过前两个的结果
list.stream().skip(2).forEach(System.out::println);
System.out.println("-------------");
//3.去重
list.stream().distinct().forEach(System.out::println);
System.out.println("----------------");
//4.sorted排序
list.stream().sorted((o1,o2)->o1.getAge().compareTo(o2.getAge())).forEach(System.out::println);
System.out.println("--------------");
//5.map映射---转为map集合
list.stream().map(t->t.getName()).forEach(System.out::println);
System.out.println("------------------");
//6.多线程查看
list.stream().parallel().forEach(System.out::println);
System.out.println("---------------------");
//7.min求最小值
System.out.println(list.stream().min((o1,o2)->o1.getAge()-(o2.getAge())));
System.out.println("----------------------");
//8.max的最大值
System.out.println(list.stream().max((o1,o2)->o1.getAge()-o2.getAge()));
System.out.println("---------------------");
//9.求总个数`
System.out.println(list.stream().count());
System.out.println("---------------------");
//10.reduce计算
Optional<Integer> reduce = list.stream().map(t -> t.getAge()).reduce((o1, o2) -> o1 +o2 );
System.out.println("计算的结果是:"+reduce);
//11.用collect将stream转为集合的方法
Set<String> collect = list.stream().map(t -> t.getName()).collect(Collectors.toSet());
System.out.println("转为的结果是:"+collect);
}