- 1.Stream流是什么?
- 2. stream流的创建方式?
- 2.1通过集合直接创建
- 2.2通过数组直接创建
- 2.3通过Stream.of创建
- 3. Stream对数据进行操作
- 3.1 (filter,skip,limit,distinct)筛选和切片(方法直接可以通过链式编程写出)
- 3.2 map映射
- 3.3 进行排序
- 3.4 (allmatch,noneMatch,findAny,filter)匹配查找
- 3.5 (reduce)归约
- 3.6 (collect) 收集,可以为Set(无序,去除重复),List(有序,有重复)
- 4.用于筛选一个集合中不包含另外一个集合
它是jdk8 的java新特性, 主要是针对集合进行数据的筛选和查找操作,是一种高效且易用的数据处理方式 ,所以可以直接使用stream流来替代for或者while循环的使用。
2. stream流的创建方式? 2.1通过集合直接创建List2.2通过数组直接创建strings = Arrays.asList("1", "2", "3"); // 返回一个顺序流 Stream stream = strings.stream(); // 返回一个并行流 Stream stringStream = strings.parallelStream();
可以把上面的集合直接转化为数组
Stream2.3通过Stream.of创建
Stream3. Stream对数据进行操作 3.1 (filter,skip,limit,distinct)筛选和切片(方法直接可以通过链式编程写出) 3.2 map映射integerStream = Stream.of(1, 2, 3, 5, 6, 7, 8); Stream stringStream1 = Stream.of("11", "22", "33");
inspectorUpholds.stream()
.map(InspectorUphold::getPerid)
.collect(Collectors.toList()).forEach(System.out::println);
3.3 进行排序
list.stream().sorted(Comparator
.comparingInt(Student::getAge));
3.4 (allmatch,noneMatch,findAny,filter)匹配查找
3.5 (reduce)归约
// 计算学生总分
List studentList = StudentData.getStudents();
Stream doubleStream = studentList.stream().map(Student::getScore);
Optional reduce1 = doubleStream.reduce(Double::sum);
System.out.println(reduce1.orElse(0.0));
3.6 (collect) 收集,可以为Set(无序,去除重复),List(有序,有重复)
Setset = inspectorUpholds.stream() .collect(Collectors.groupingBy(InspectorUphold::getPerid)) .keySet(); List collect1 = inspectorUpholds.stream() .map(InspectorUphold::getPerid) .collect(Collectors.toList());
inspectorUpholds.stream()
.map(InspectorUphold::getPerid)
.collect(Collectors.toList()).forEach(System.out::println);
4.用于筛选一个集合中不包含另外一个集合
list为大的集合,zjlist小的
List extends List> list1 = list.stream().filter(item -> zjstringsList.stream().allMatch(each -> !item.equals(each))).collect(Collectors.toList());



