愿景:"让编程不再难学,让技术与生活更加有趣"
更多架构课程请访问 xdclass.net
目录
第2集 Java新特性玩转JDK8之流操作map和filter函数
第3集 Java新特性玩转JDK8之流操作limit和sorted函数
第4集 Java新特性玩转JDK8之流操作allMatch和anyMatch函数
第1集 Java新特性玩转JDK8之流Stream实战
简介:讲解jdk8里面的流stream的使用
-
什么是stream
-
Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流”的元素队列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作
-
元素是特定类型的对象,所以元素集合看作一种流, 流在管道中传输, 且可以在管道的节点上进行处理, 比如 排序,聚合,过滤等操作
-
-
操作详情
-
-
-
数据元素便是原始集合,如List、Set、Map等
-
生成流,可以是串行流stream() 或者并行流 parallelStream()
-
中间操作,可以是 排序,聚合,过滤,转换等
-
终端操作,很多流操作本身就会返回一个流,所以多个操作可以直接连接起来,最后统一进行收集
-
概览stream接口源码
-
-
快速上手
List<String> list = Arrays.asList("springboot教程","微服务教程","并发编程","压力测试","架构课程"); List<String> resultList = list.stream().map(obj->"在小滴课堂学:"+obj).collect(Collectors.toList()); System.out.println(resultList);
第2集 Java新特性玩转JDK8之流操作map和filter函数
简介:讲解jdk8里面的流stream里的map和filter函数的使用
-
map函数
-
将流中的每一个元素 T 映射为 R(类似类型转换)
-
上堂课的例子就是,类似遍历集合,对集合的每个对象做处理
-
场景:转换对象,如javaweb开发中集合里面的DO对象转换为DTO对象
List<String> list = Arrays.asList("springboot教程","微服务教程","并发编程","压力测试","架构课程"); List<String> resultList = list.stream().map(obj->"在小滴课堂学:"+obj).collect(Collectors.toList()); System.out.println(resultList); List<User> list = Arrays.asList(new User(1,"小东","123"),new User(21,"jack","rawer"), new User(155,"tom","sadfsdfsdfsd"), new User(231,"marry","234324"),new User(100,"小D","122223")); List<UserDTO> userDTOList = list.stream().map(obj->{ UserDTO userDTO = new UserDTO(obj.getId(),obj.getName()); return userDTO; }).collect(Collectors.toList()); System.out.println(userDTOList);
-
-
filter函数
-
用于通过设置的条件过滤出元素
-
需求:过滤出字符串长度大于5的字符串
List<String> list = Arrays.asList("springboot", "springcloud", "redis", "git", "netty", "java", "html", "docker"); List<String> resultList = list.stream().filter(obj -> obj.length() > 5).collect(Collectors.toList()); System.out.println(resultList);
-
场景:主要用于筛选过滤出符合条件的元素
-
第3集 Java新特性玩转JDK8之流操作limit和sorted函数
简介:讲解jdk8里面的流stream里的limit和sorted函数的使用
-
sorted函数
-
sorted() 对流进行自然排序, 其中的元素必须实现Comparable 接口
List<String> list = Arrays.asList("springboot", "springcloud", "redis", "git", "netty", "java", "html", "docker"); List<String> resultList = list.stream().sorted().collect(Collectors.toList());
-
sorted(Comparator<? super T> comparator) 用来自定义升降序
List<String> list = Arrays.asList("springboot", "springcloud", "redis", "git", "netty", "java", "html", "docker"); //根据长度进行排序 //List<String> resultList = list.stream().sorted(Comparator.comparing(obj -> obj.length())).collect(Collectors.toList()); //List<String> resultList = list.stream().sorted(Comparator.comparing(obj -> obj.length(),Comparator.reverseOrder())).collect(Collectors.toList()); //List<String> resultList = list.stream().sorted(Comparator.comparing(String::length).reversed()).collect(Collectors.toList()); System.out.println(resultList);
-
-
limit函数
-
截断流使其最多只包含指定数量的元素
List<String> list = Arrays.asList("springboot", "springcloud", "redis", "git", "netty", "java", "html", "docker"); //limit截取 List<String> resultList = list.stream().sorted(Comparator.comparing(String::length).reversed()).limit(3).collect(Collectors.toList()); System.out.println(resultList);
-
第4集 Java新特性玩转JDK8之流操作allMatch和anyMatch函数
简介:讲解jdk8里面的流stream里的allMatch和anyMatch函数的使用
-
allMatch函数
-
检查是否匹配所有元素,只有全部符合才返回true
-
List<String> list = Arrays.asList("springboot", "springcloud", "redis", "git", "netty", "java", "html", "docker");
boolean flag = list.stream().allMatch(obj->obj.length()>1);
System.out.println(flag);
-
anyMatch函数
-
检查是否至少匹配一个元素
List<String> list = Arrays.asList("springboot", "springcloud", "redis", "git", "netty", "java", "html", "docker"); boolean flag = list.stream().anyMatch(obj->obj.length()>18); System.out.println(flag);
-
-
先看方法入参,返回值,再看方法描述
第5集 Java新特性玩转JDK8之流操作max和min函数
简介:讲解jdk8里面的流stream里的max和min函数的使用
-
max和min函数
-
最大值和最小值
List<Student> list = Arrays.asList(new Student(32),new Student(33),new Student(21),new Student(29),new Student(18)); //list.stream().max(Comparator.comparingInt(Student::getAge)); //最大 Optional<Student> optional = list.stream().max((s1, s2)->Integer.compare(s1.getAge(),s2.getAge())); //最小 Optional<Student> optional = list.stream().min((s1, s2)->Integer.compare(s1.getAge(),s2.getAge())); System.out.println(optional.get().getAge());
-
干货文档
关注公众号发送:“CSDN干货文档” 即可领取