话不多说,现在开始。 从上面我们可以总结出,当lambda 表达式的写法,写成下方样式的时候 相当于传入一个方法,方法默认返回值为5,具体的写法也可以写成 等价于 java8 中新增的一种关键字,我们可以通过 可以精简为 此时代码可以自动将前面流操作所返回的数据,进行对该方法参数的填充,从而让代码更好的理解,可以更多的关注于业务层面。 相同的使用方法还有: (如有更多例子可以下面留言,我来添加到文章中) (暂未开坑) 初始化数据 可以使用 简单来讲Comparator 方法的实现,在于 此方法也可以精简为 还可以进一步精简为 该方法可以筛选出值大于3 的所有数值,并返回一个集合。 操作数组可以使用 类型转换的操作,可以借用 从2.4 的例子中,我们不难看出,collect 方法的主要用处就是组装数据,并将数据整理成目标样子。 从现在开始,就是 将该 组装的map 集合中,key 就是每个学生的id,value 就是每个学生的实体类。 该拼接字符串的方式,极大的方便了数据拼接,省时省力。 这是字符串 常用于整合 当前集合中,key 为教室id,value 为该教室的学生集合。 (如有需要,可以留言提交,我会补充,工作比较忙,敬请见谅)
点击目录,跳转浏览。 类别目录
1. 使用实例
1.1 – 简单使用
() -> 5
() -> 5
() -> { return 5; }
public int method(){ return 5; }
1.2 – 使用:: 操作符
::
关键字来访问类的构造方法,对象方法,静态方法等。
在使用lambda 的过程中,比如以下情况(str) -> System.out.println(str);
System.out::println
String::new // 可以创建出一个String 对象
1.3 – 使用@FunctionalInterface 注解
2. 使用Stream
List<Long> sourceList = new LinkedList<>(); sourceList.add(1L); sourceList.add(2L); sourceList.add(3L); sourceList.add(4L); sourceList.add(5L); Map<String, Integer> sourceMap = = new LinkedHashMap<>(); sourceMap.put("a1", 1); sourceMap.put("a2", 2); sourceMap.put("a3", 3); sourceMap.put("a4", 4); sourceMap.put("a5", 5);
2.1 – sorted
sorted
方法进行排序,参数上可以传入一个Comparator
对象来进行处理排序规则,具体的排序顺序,可以看具体教程。(默认为字典排序,既从小到大排序)o1
与o2
的比较结果。
如果o1
比o2
小,则返回小于0
的返回值。
如果o1
大于o2
,则返回大于0
的返回值。
如果相同,则返回0
; List<Long> result = sourceList.stream().sorted(new Comparator<Long>() { @Override public int compare(Long o1, Long o2) { return o1.compareTo(o2); } });
List<Long> result = sourceList.stream().sorted((o1, o2) -> o1.compareTo(o2));
List<Long> result = sourceList.stream().sorted(Long::compareTo);
2.2 – filter
List<Long> result = sourceList .stream() .filter(e -> e > 3) .collect(Collectors.toList());
2.3 – 数组如何使用stream 操作
Integer[] arr = new Integer[]{1, 2, 3, 4, 5}; List<Integer> result = Arrays.stream(arr).collect(Collectors.toList()); List<Integer> result = Stream.of(arr).collect(Collectors.toList());
Arrays.strea()
的方式,或者使用Stream 通用的生成方式Stream.of()
2.4 – map
List<String> result = sourceList .stream() .map(String::valueOf) .collect(Collectors.toList());
map
方法,可以理解为,将整个数组一个一个的遍历,每次有一个数据到达map
方法的时候,就会执行map
方法中的处理,并将一个返回值提交给下一个方法去执行。
样例中的方法用处,是将原数组中的Long
类型数值,转换为String
类型,并将返回的String
类型数据进行组装集合。2.5 – collect 收集操作
list
、set
等太简单,举出样例跳过组装List 数组
collect(Collectors.toList())
组装Set 数组
collect(Collectors.toSet())
组装map 集合
collect
方法常用的几种方式了
首先初始化数据 // 创建一个Student 的实体类 @Data // 我这里使用的lombok 简化 public class Student { private Integer num; // 学号 private String name; // 姓名 private Integer roomId; // 教室编号 } // 初始化数据列表 List<Student> sourceList = new LinkedList<>(); sourceList.add(new Student(1, "张三", 1001)); sourceList.add(new Student(2, "李四", 1001)); sourceList.add(new Student(3, "王五", 1003)); sourceList.add(new Student(4, "赵六", 1003));
list
转换为map
集合数据。 Map<Integer,Student> map = sourceList .stream() .collect(Collectors.toMap(Student::getNum, e -> e));
拼接字符串
常见于如微信支付中数据签名时拼接&
字符等 String names =sourceList .stream() .map(Student::getName) .collect(Collectors.joining(","));
names
的值,为张三,李四,王五,赵六
数据分组
list
集合中的重复数据进行数据分组。 Map<Integer, List<Student>> rooms = sourceList .stream() .collect(Collectors.groupingBy(Student::getRoomId));
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算