stream流倒序排序_java8Stream流相关操作Java8 Stream
1 Stream概述
2 Stream的创建mysql菜鸟教程聚合函数
3 Stream的使⽤
3.6.1 归集(toList/toSet/toMap)
3.6.2 统计(count/averaging)
3.6.3 分组(partitioningBy/groupingBy)
3.6.4 接合(joining)
3.6.5 归约(reducing)
案例使⽤的员⼯类
3.1 遍历/匹配(foreach/find/match)
offset函数的使用方法图解
3.2 筛选(filter)
3.3 聚合(max/min/count)
3.4 映射(map/flatMap)
3.5 归约(reduce)
3.6 收集(collect)
3.7 排序(sorted)
3.8 提取/组合
4 Stream源码解读
点波关注不迷路,⼀键三连好运连连!
先贴上⼏个案例,⽔平⾼超的同学可以挑战⼀下:
1. 从员⼯集合中筛选出salary⼤于8000的员⼯,并放置到新的集合⾥。
2. 统计员⼯的最⾼薪资、平均薪资、薪资之和。
3. 将员⼯按薪资从⾼到低排序,同样薪资者年龄⼩者在前。
4. 将员⼯按性别分类,将员⼯按性别和地区分类,将员⼯按薪资是否⾼于8000分为两部分。
⽤传统的迭代处理也不是很难,但代码就显得冗余了,跟Stream相⽐⾼下⽴判。
1 Stream概述
Java 8 是⼀个⾮常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极⼤的便利。那么什么是Stream?
Stream将要处理的元素集合看作⼀种流,在流的过程中,借助Stream API对流中的元素进⾏操作,⽐如:筛选、排序、聚合等。Stream可以由数组或集合创建,对流的操作分为两种:
1. 中间操作,每次返回⼀个新的流,可以有多个。
2. 终端操作,每个流只能进⾏⼀次终端操作,终端操作结束后流⽆法再次使⽤。终端操作会产⽣⼀个
新的集合或值。
另外,Stream有⼏个特性:
1. stream不存储数据,⽽是按照特定的规则对数据进⾏计算,⼀般会输出结果。
2. stream不会改变数据源,通常情况下会产⽣⼀个新的集合或⼀个值。
3. stream具有延迟执⾏特性,只有调⽤终端操作时,中间操作才会执⾏。
2 Stream的创建
Stream可以通过集合数组创建。
1、通过 java.util.Collection.stream() ⽅法⽤集合创建流
List<String> list = Arrays.asList("a", "b", "c");
// 创建⼀个顺序流
Stream<String> stream = list.stream();
/
/ 创建⼀个并⾏流
Stream<String> parallelStream = list.parallelStream();
1
2
3
4
5
2、使⽤java.util.Arrays.stream(T[] array)⽅法⽤数组创建流
int[] array={1,3,5,6,8};
IntStream stream = Arrays.stream(array);
1
2
3、使⽤Stream的静态⽅法:of()、iterate()、generate()
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
Stream<Integer> stream2 = Stream.iterate(0, (x) -> x + 3).limit(4);
stream2.forEach(System.out::println);
Stream<Double> stream3 = ate(Math::random).limit(3);
stream3.forEach(System.out::println);
1
2
3
4
5
6
7
输出结果:
0 3 6 9
0.6796156909271994
c语言函数名有哪些
0.1914314208854283
0.8116932592396652
stream和parallelStream的简单区分: stream是顺序流,由主线程按顺序对流执⾏操作,⽽parallelStream是并⾏流,内部以多线程并⾏执⾏的⽅式对流进⾏操作,但前提是流中的数据处理没有顺序要求。例如筛选集合中的奇数,两者的处理不同之处:
如果流中的数据量⾜够⼤,并⾏流可以加快处速度。
除了直接创建并⾏流,还可以通过parallel()把顺序流转换成并⾏流:
Optional<Integer> findFirst = list.stream().parallel().filter(x->x>6).findFirst();
1
3 Stream的使⽤
在使⽤stream之前,先理解⼀个概念:Optional 。
Optional类是⼀个可以为null的容器对象。如果值存在则isPresent()⽅法会返回true,调⽤get()⽅法会返回该对象。
更详细说明请见:菜鸟教程Java 8 Optional类
接下来,⼤批代码向你袭来!我将⽤20个案例将Stream的使⽤整得明明⽩⽩,只要跟着敲⼀遍代码,就能很好地掌握。
drupal7二次开发教程案例使⽤的员⼯类
这是后⾯案例中使⽤的员⼯类:
List<Person> personList = new ArrayList<Person>();
personList.add(new Person("Tom", 8900, "male", "New York")); personList.add(new Person("Jack", 7000, "male", "Washington")); personList.add(new Person("Lily", 7800, "female", "Washington")); personList.add(new Person("Anni", 8200, "female", "New York")); personList.add(new Person("Owen", 9500, "male", "New York")); personList.add(new Person("Alisa", 7900, "female", "New York"));
使用存储过程的好处有哪些
class Person {
private String name;  // 姓名
private int salary; // 薪资
private int age; // 年龄
private String sex; //性别
private String area;  // 地区
// 构造⽅法
public Person(String name, int salary, int age,String sex,String area) { this.name = name;
this.salary = salary;
this.age = age;
this.sex = sex;
this.area = area;
}
// 省略了get和set,请⾃⾏添加
}
1
20180901变斜杠日期格式2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。