
Java8
在工作学习中使用jdk1.8写的一些demo代码,方便后续查看
奋斗中的老青年
可关注公众号 代码小搬运
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java8之构建流
由值构建流:使用静态方法Stream.of,通过显式值创建一个流。它可以接受任意数量的参数Stream<String> stringStream = Stream.of("我", "是", "字", "符", "串");由数组构建流:使用静态方法Arrays.stream从数组创建一个流。它接受一个数组作为参数Stream<String> stringStr...原创 2019-11-12 08:59:50 · 192 阅读 · 0 评论 -
Java8之数值流
在Java8之规约那篇文章中我们用到了数值的计算:Integer sum = numbers.stream().reduce(0, (a, b) -> a + b);,这段代码的问题是,它有一个暗含的装箱成本。每个Integer都必须拆箱成一个原始类型,在进行求和。所以Stream API提供了原始类型流特化,专门支持处理数值流的方法。映射到数值流:将流转换为特化版本的常用方法有mapT...原创 2019-11-06 09:28:38 · 259 阅读 · 0 评论 -
Java8之流操作函数介绍
操作类型返回类型使用的类型/函数式接口函数描述符filter中间Stream<T>Predicate<T>T -> booleandistinct中间(有转态-无界)Stream<T>skip中间(有转态-有界)Stream<T>longlimit中间(有转态-有界)Str...原创 2019-10-24 09:06:15 · 230 阅读 · 0 评论 -
Java8之归约
归约:将流中所有元素反复结合得到一个新值,这样的查询可用被归类为规约操作(将流规约成一个值)。用函数式编程语言的术语来说,这称为折叠。数值类型集合:元素求和 Integer sum = numbers.stream().reduce(0, (a, b) -> a + b); log.debug("sum 操作得到:[{}]", sum); ...原创 2019-10-21 08:51:43 · 636 阅读 · 0 评论 -
Java8之查找与匹配
首先准备集合:List<People> list = Lists.newArrayList(new People(19, "张三"), new People(23, "李四"), new People(15, "王二"),new People(30, "麻子"));匹配anyMatch:流中是否有一个元素能匹配给定的谓词,存在则返回true,否则false。例:警察检查网...原创 2019-10-14 10:00:16 · 658 阅读 · 0 评论 -
Java8之方法引用
为什么使用方法引用方法引用可以让你重复使用现有的方法定义,并像Lambda一样传递他们。在某些情况下,比起使用Lambda表达式,他们更易读。方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。方法引用就是根据已有的方法实现来创建Lambda表达式,但是,显示地指明方法的名称,这样使得代码的可读性更高。使用场景如果一个Lambda表达式代表的只是“调用某一方法”,那么就可以适用...原创 2019-07-04 08:18:59 · 150 阅读 · 0 评论 -
Java8之List转换
List转换成mappublic static void listConversionToMap(List<Orange> list) { //颜色作为key,重量作为value,如果key重复,取较重的值(注意:key重复不做处理会报-->java.lang.IllegalStateException: Duplicate key) Map<String...原创 2019-07-01 08:23:20 · 4499 阅读 · 0 评论 -
Java8之函数式接口
简介只定义一个抽象方法的接口,以函数式接口为参数的方法就可以使用Lambda表达式(Lambda表达式允许直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例)。函数式接口的抽象方法的签名称为函数描述符。与Lambda之间的关联函数式接口中的抽象方法的签名可以描述Lambda表达式的签名,如果没有符合条件的函数式接口的方法签名,那么此Lambda表达式是...原创 2019-06-24 08:21:49 · 1537 阅读 · 3 评论 -
java8实现List排序
数值集合排序List<Integer> list = Lists.newArrayList(3, 1, 2, -1);// 正序list.sort(Integer::compareTo);list.forEach((i) -> System.out.println(i));// 倒叙list.sort(Comparator.reverseOrder());lis...原创 2019-06-20 08:23:03 · 2928 阅读 · 0 评论 -
Java8之Lambda表达式简介
为什么要使用Lambda表达式使代码更简洁,使代码更清晰、灵活// 使用之前public List<Orange> filter(List<Orange> oranges){ return FilterUtils.filter(oranges, new FilterUtils.Predicate<Orange>() { @Overr...原创 2019-06-19 08:23:02 · 133 阅读 · 0 评论 -
Java8行为参数化
需求:提供一个橘子的筛选功能,可通过颜色、重量为条件定义橘子实体:@Getter@Setterpublic class Orange { private double weight; private String color;}初学者:通过定义橘子工具类来实现,如果增加属性,如果需要提供筛选功能,那么又要继续增加筛选方法public class OrangeUt...原创 2019-06-05 09:12:21 · 160 阅读 · 0 评论 -
Java8之map和flatMap
首先定义一个实体类,下面demo中用到:@Getter@Setter@AllArgsConstructor@NoArgsConstructorpublic class People { private int age; private String name;}map方法:这里的map所指的并不是Java中的Map集合,而是Stream中的一个方法,它的作用是...原创 2019-10-10 15:42:11 · 349 阅读 · 0 评论 -
Java8之流操作
java.util.stream.Stream中的Stream接口定义了许多操作。它们可分为两大类: List<Orange> list = Lists.newArrayList(new Orange(1.2, "红"), new Orange(2.3, "黄"), new Orange(3.2, "绿"), new Orange(0.2...原创 2019-09-18 08:59:08 · 221 阅读 · 0 评论 -
Java8流操作之筛选与切片
筛选:用谓词筛选(一个返回boolean的函数)筛选,筛选出各不相同的元素用谓词筛选:Stream支持的filter方法,接受一个谓词作为参数,返回所有符合要求元素的流List<Integer> list = Lists.newArrayList(1, 3, 10, 2, 8, 4, -10, -5);//筛选出大于等于4并是偶数的元素后迭代输出list.stream()....原创 2019-09-25 09:26:18 · 971 阅读 · 0 评论