Try Everything Different In My Life.

使用Java8中Stream的API

2019.12.05

Java8中带来全新的Stream API,提供更加便利的方法来操作集合对象。是对集合对象操作的增强。

使用stream是因为生成一张复杂的报表,想用一条SQL直接写出来,但是一直没有达到想要的效果,碍于项目的进度,只能很丑的分成多条SQL来完成。查出来的结果还要各种按照条件删选。直到遇到stream,最直接的感觉就是:

以操控集合像写SQL一样

Stream特点

  • 如同流一样,单向不可重复
  • 可以并行化操作

Stream生命周期

stream的操作主要分成三步:

  • 1.创建流
  • 2.Intermediate操作刘
  • 3.Terminal操作流

流

其中Intermediate操作可以叠加多次,但是Terminal操作只能操作一次。

Stream的创建

创建stream有以下几种方法:

# 第一种
Stream stream = Stream.of(1,2,3);

# 第二种
Integer[] intArr = [1,2,3]
Stream stream = Stream.of(intArr);;

# 第三种
List<Integer> list = new ArrayList();
stream = list.stream();

Intermediate操作Stream

# Filter(筛选出大于1的元素)
List<Integer> intList = list.stream()
                .fliter(i -> i > 1)
                .collect(Collectors.toList());

# map(映射成大写)
List<String> output = wordList.stream()
                .map(String::toUpperCase)
                .collect(Collectors.toList());

# sorted(按照年龄排序)
Person p1 new Person("James",12);
Person p1 new Person("Pony",22);
Person p1 new Person("Nancy",12);
. . .
List<Person> list = persons.stream().
                .sorted(p - > )

Terminal操作