Stream流
获取流
根据List获取流
java
1 | ArrayList<Object> list = new ArrayList<>(); |
根据Set集合获取流
java
1 | HashSet<Object> set = new HashSet<>(); |
根据Map集合获取流
根据键获取流
java
1 | HashMap<Object, Object> map = new HashMap<>(); |
根据值获取流
java
1 | HashMap<Object, Object> map = new HashMap<>(); |
根据键值对对象获取值
java
1 | HashMap<Object, Object> map = new HashMap<>(); |
根据数组获取流
java
1 | String[] strs = new String[]{"a","b","c"}; |
常用方法
终结方法:返回值类型不再是Stream接口本身类型的方法
非终结方法(延迟方法):返回值类型仍然是Stream接口自身类型的方法,除了终结方法都是延迟方法

count方法
long count();
:统计流中的元素,返回long类型数据
java
1 | ArrayList<Object> list = new ArrayList<>(); |
forEach方法
void forEach(Consumer<? super T> action)
:逐一处理流中的元素
java
1 | ArrayList<String> list = new ArrayList<>(); |
filter方法
Stream<T> filter(Predicate<? super ?> predicate)
:过滤出满足条件的元素
java
1 | Stream<String> stream = Stream.of("abc", "bbc", "cba", "aac"); |
limit方法
Stream<T> limit(long maxSize)
:取用前几个元素
注意:参数是一个long 类型,如果流的长度大于参数,则进行截取;否则不进行操作
java
1 | Stream<String> stream = Stream.of("abc", "bbc", "cba", "aac"); |
skip方法
Stream<T> skip(long n)
:跳过前几个元素
java
1 | Stream<String> stream = Stream.of("abc", "bbc", "cba", "aac"); |
concat方法
public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
:合并两个流
java
1 | Stream<String> stream1 = Stream.of("abc", "bbc", "cba", "aac"); |
map方法
将流中的元素进行再次加工形成一个新流,流中的每一个元素映射为另外的元素
java
1 | Stream<String> stream = Stream.of("1","2","3"); |
collect() 方法
收集流中的数据到集合或者数组中去
java
1 | Stream<String> stream = Stream.of("a", "b", "c"); |
Stream流中数据聚合/分组/分区/拼接操作
先创建一个实体类Student方便进行演示
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 >public class Student {
private String name; //名字
private int age; //年龄
private int score; //分数
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public int getScore() { return score; }
public void setScore(int score) { this.score = score; }
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
聚合操作
java
1 | Stream<Student> studentStream = Stream.of( |
分组操作
java
1 | //1、按照年龄进行分组 |
java
1 | //2、将分数大于90的分为优秀,小于90分为良 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Z.yang!