stream流常用的API

Stream是对集合(Collection)对象功能的增强,它借助于lambda表达式,更优雅的表达风格,极大的提高编程效率和程序可读性。它针对于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。

stream流的获取

在Collection集合下,均有一个stream(),另一个即是用Stream的一个静态方法 of() 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
//Collction集合
Collection<String> collection = new ArrayList();
Stream<String> stream = collection.stream();
//List集合
List<String> list = new ArrayList<>();
Stream<String> stream1 = list.stream();
//ArrayList集合
ArrayList<String> arrayList = new ArrayList<>();
Stream<String> stream2 = arrayList.stream();
//LinkedList集合
LinkedList<String> linkedList = new LinkedList<>();
Stream<String> stream3 = linkedList.stream();

//of()方式实现
List<String> list1 = new ArrayList<>();
Stream<List<String>> stream4 = Stream.of(list1);
//传入可变数组
Stream<String> stream5 = Stream.of("1","2","3","4");
}

foreach()

遍历流中的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("李四");
list.add("李四");
list.add("李四");
list.add("李四");
list.add("李四");

//遍历流的对象
list.stream().forEach((name) -> System.out.println(name));
}

filter()

filter对流对象进行过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("张三");
list.add("李四二");
list.add("李四我");
list.add("李四去晚");
list.add("李四请问");
list.add("李四去");
list.add("李四我");

//过滤流的对象
list.stream().filter((name) -> name.length()==2);
}

map()

map是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");

//map()是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型
list.stream().map(num -> Integer.parseInt(num));
}

count()

count是对流数据统计的方法,但是count之后返回的是long类型,所以无法再进行流操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");

//count()对流数据进行统计
System.out.println(list.stream().count());
}

limit()

选取流数据的前多少条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("李四1");
list.add("李四2");
list.add("李四3");
list.add("李四4");
list.add("李四5");
list.add("李四6");
list.add("李四7");
//limit() 选取流数据的前多少条数据
list.stream().limit(2);
}

skip()

跳过流数据的前多少条数据,该方法与limit()方法刚好相反

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("李四1");
list.add("李四2");
list.add("李四3");
list.add("李四4");
list.add("李四5");
list.add("李四6");
list.add("李四7");
//skip() 跳过流数据的前多少条数据
list.stream().skip(2);
}

concat()

Stream的静态方法concat()实现对两个流数据进行合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) {
// 定义一个集合
ArrayList<String> list = new ArrayList<>();
list.add("李四1");
list.add("李四2");
list.add("李四3");
list.add("李四4");
list.add("李四5");
list.add("李四6");
list.add("李四7");
// 定义一个集合
ArrayList<String> list1 = new ArrayList<>();
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
list1.add("5");
list1.add("6");
list1.add("7");
//concat()实现对两个流数据进行合并
Stream.concat(list.stream(),list1.stream());
}