java 8新特性 获取Stream流的两种方式

获取一个流非常简单,有以下几种常用的方式:

所有的 Collection 集合都可以通过 stream 默认方法获取流;

Stream 接口的静态方法 of 可以获取数组对应的流。

方式1 : 根据Collection获取流

首先, java.util.Collection 接口中加入了default方法 stream 用来获取流,所以其所有实现类均可获取流。

publicinterfaceCollection{

    defaultStreamstream()

}

importjava.util.*;

importjava.util.stream.Stream;

publicclassDemo04GetStream{

publicstaticvoidmain(String[]args) {

// 集合获取流

// Collection接口中的方法: default Stream stream() 获取流

Listlist=newArrayList<>();

// ...

Streamstream1=list.stream();

Setset=newHashSet<>();

// ...

Streamstream2=set.stream();

Vectorvector=newVector<>();

// ...

Streamstream3=vector.stream();

  }

}

java.util.Map 接口不是 Collection 的子接口,所以获取对应的流需要分key、value或entry等情况:

importjava.util.HashMap;

importjava.util.Map;

importjava.util.stream.Stream;

publicclassDemo05GetStream{

publicstaticvoidmain(String[]args) {

// Map获取流

Mapmap=newHashMap<>();

// ...

StreamkeyStream=map.keySet().stream();

StreamvalueStream=map.values().stream();

Stream>entryStream=map.entrySet().stream();

  }

}

方式2 : Stream中的静态方法of获取流

由于数组对象不可能添加默认方法,所以 Stream 接口中提供了静态方法 of ,使用很简单:

importjava.util.stream.Stream;

publicclassDemo06GetStream{

publicstaticvoidmain(String[]args) {


// Stream中的静态方法: static Stream of(T... values)

Streamstream6=Stream.of("aa","bb","cc");


String[]arr={"aa","bb","cc"};

Streamstream7=Stream.of(arr);

Integer[]arr2={11,22,33};


Streamstream8=Stream.of(arr2);


// 注意:基本数据类型的数组不行

int[]arr3={11,22,33};

Streamstream9=Stream.of(arr3);

  }

}

备注: of 方法的参数其实是一个可变参数,所以支持数组。

小结

通过Collection接口中的默认方法Stream stream()

通过Stream接口中的静态of方法

你可能感兴趣的:(java 8新特性 获取Stream流的两种方式)