- 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通过集合直接创建 List<String> strings = Arrays.asList("1", "2", "3");
// 返回一个顺序流
Stream<String> stream = strings.stream();
// 返回一个并行流
Stream<String> stringStream = strings.parallelStream();
2.2通过数组直接创建
可以把上面的集合直接转化为数组
Stream<Object> stream1 = Arrays.stream(strings.toArray());
2.3通过Stream.of创建
Stream<Integer> integerStream = Stream.of(1, 2, 3, 5, 6, 7, 8);
Stream<String> stringStream1 = Stream.of("11", "22", "33");
3. Stream对数据进行 *** 作
3.1 (filter,skip,limit,distinct)筛选和切片(方法直接可以通过链式编程写出)
3.2 map映射
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<Student> studentList = StudentData.getStudents();
Stream<Double> doubleStream = studentList.stream().map(Student::getScore);
Optional<Double> reduce1 = doubleStream.reduce(Double::sum);
System.out.println(reduce1.orElse(0.0));
3.6 (collect) 收集,可以为Set(无序,去除重复),List(有序,有重复)
Set<String> set = inspectorUpholds.stream()
.collect(Collectors.groupingBy(InspectorUphold::getPerid))
.keySet();
List<String> 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());
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)