jdk8新特性

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);
    }
上一篇:POJ3070 Fibonacci[矩阵乘法]


下一篇:JDK8后接口中是可以写默认方法和静态方法的哦,不清楚的进来看看吧!!!