
Java8
文章平均质量分 92
to_real
这个作者很懒,什么都没留下…
展开
-
20 个实例玩转 Java 8 Stream
先贴上几个案例,水平高超的同学可以挑战一下:1. 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。2. 统计员工的最高薪资、平均薪资、薪资之和。3. 将员工按薪资从高到低排序,同样薪资者年龄小者在前。4. 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。用传统的迭代处理也不是很难,但代码就显得冗余了,跟Stream相比高下立判。Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的Lambda,给我...原创 2021-05-12 14:32:42 · 111 阅读 · 0 评论 -
java8新特性_20_时间格式化与时区处理
@Test public void test2(){ DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE; LocalDateTime ldt = LocalDateTime.now(); String strDate = ldt.format(dtf); System.out.println(strDate);//2019-09-27 DateTimeFormat.原创 2020-09-23 17:43:53 · 607 阅读 · 0 评论 -
java8新特性_19_新时期与日期API_时间矫正器
//TemporalAdjuster 时间矫正器 @Test public void test1(){ LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); //日期变为10号 LocalDateTime ldt2 = ldt.withDayOfMonth(10); System.out.println(ldt2); .原创 2020-09-23 17:17:50 · 106 阅读 · 0 评论 -
java8新特性_18_新时期与日期API_本地时间和时间戳
@Test public void test1(){ LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.of(2019, 9, 26, 21, 48); System.out.println(ldt2); //可以进行年月计算 //加两年 ...原创 2020-09-23 15:36:27 · 808 阅读 · 1 评论 -
java8新特性_17_传统时间格式化的线程安全问题
新时间日期API以前的时间API是线程不安全的,是可变的线程不安全public class TestSimpleDateFormat { public static void main(String[] args) throws Exception{ SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Callable<Date> task = new Callable&l原创 2020-09-23 14:52:41 · 190 阅读 · 0 评论 -
java8新特性_12_Stream练习
public class TestStreamApi04lianxi { List<Employee> emps = Arrays.asList( new Employee("张三", 18,9999.99, Status.FREE), new Employee("李四", 38,5555.99, Status.BUSY), new Employee("王五", 50,6666.66, Status.VOCA...原创 2020-09-01 17:45:43 · 235 阅读 · 0 评论 -
java8新特性_12_归纳与收集
归约: reduce(T identity, BinaryOperator)/reduce(BinaryOperator) —— 可以将流中元素反复结合起来,得到一个值。备注:map 和 reduce 的连接通常称为 map-reduce 模式,因为 Google 用它来进行网络搜索而出名收集: collect —— 将流转换为其他形式。接收一个 Collector 接口的实现,用于给 Stream 中元素做汇总的方法。/** * 终止操作 */public class原创 2020-09-01 16:05:53 · 175 阅读 · 0 评论 -
java8新特性_11_查找和匹配
查找与匹配: (1)allMatch —— 检查是否匹配所有元素; (2)anyMatch —— 检查是否至少匹配一个元素; (3)noneMatch —— 检查是否没有匹配所有元素; (4)findFirst —— 返回第一个元素; (5)findAny —— 返回当前流中的任意元素; (6)count —— 返回流中元素的总数; (7)max —— 返回流中最大值; (8)min —— 返回流中最小值;package com.doublew.TestStreamAp原创 2020-09-01 15:24:37 · 230 阅读 · 0 评论 -
java8新特性_10_排序
排序: sorted()—— 自然排序(Comparable); sorted(Comparator com)—— 定制排序(Comparator);package com.Stream;import com.lambda1.Employe;import org.junit.Test;import java.util.Arrays;import java.util.List;/** * 排序 */public class TestStreamAPI4 { ...原创 2020-09-01 14:52:40 · 342 阅读 · 0 评论 -
java8新特性_09_映射
映射: map —— 接收 Lambda,将元素转换成其它形式或提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素; flatMap —— 接收一个函数作为参数,将流中的每个值都转换成另一个流,然后把所有流连接成一个流;package com.doublew.TestStreamApi;import com.doublew.testJava8.pojo.Employee;import org.junit.Test;import java.u.原创 2020-09-01 14:50:53 · 172 阅读 · 0 评论 -
java8新特性_08_筛选与切片
筛选与切片: filter —— 接收 Lambda,从流中排除某些元素; limit —— 截断流,使其元素不超过给定数量; skip(n) —— 跳过元素,返回一个仍掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补; distinct —— 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素。 List<Employe> employes = Arrays.asList( .原创 2020-09-01 13:13:36 · 205 阅读 · 0 评论 -
java8新特性_07_创建Stream
www原创 2020-08-09 14:54:14 · 110 阅读 · 0 评论 -
java8新特性_06_方法引用和构造器引用
方法引用一、方法引用:若 Lambda 体内的内容有方法已经实现了, 我们可以使用“方法引用” (可以理解为方法引用时 Lambda 表达式的另外一种表现形式)主要有三种语法格式: 对象::实例方法名 类::静态方法名 类::实例方法名注意: (1)Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数式列表和返回值类型保持一致! (2)Lambda 参数列表中第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用原创 2020-08-09 14:38:28 · 134 阅读 · 0 评论 -
java8新特性_05_java8内置的四大函数式接口
内置函数式接口1.Consumer<T>:消费型接口 void accept(T t);2.Supplier<T>: 供给型接口 T get();3.Function<T, R>:函数型接口 R apply(T t);4.Predicate<T>:断言型接口 boolean test(T t);...原创 2020-08-09 13:00:01 · 134 阅读 · 0 评论 -
java8新特性_04_Lambda表达式练习
public class TestJava83 { List<Employee> emplpoyees = Arrays.asList( new Employee("张四",33,988.88), new Employee("张三",23,888.88), new Employee("张吴",43,9988.88), new Employee("张六",53,8998.88)); ...原创 2020-08-09 07:33:27 · 165 阅读 · 0 评论 -
java8新特性_03_Lambda表达式基础语法
Lambda 表达式语法(对接口的实现)Lambda 是一个匿名函数,可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。Java8引入了一个新的操作符 “->” 该操作符称为箭头符或lambda 操作符,箭头操作符将 Lambda 表达式拆分成两部分:左侧:Lambda 表达式的参数列表;右侧:Lambda 表达式中所需要执行的功能,即 Lambda 体;语法格式//语法格式一:无参,无返回值Runnable r...原创 2020-08-08 12:06:43 · 229 阅读 · 0 评论 -
java8新特性_02_为什么要用Lambda表达式
匿名内部类@Testpublic void test01(){ //匿名内部类 Comparator<Integer> comparator = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return Integer.compare(o1,o2); }原创 2020-08-07 17:03:28 · 127 阅读 · 0 评论 -
java8新特性_01_简介(Hashmap,内存模型)
目录1.1 生态1.2 新特性1.3 温故而知新1.1 生态Lambda 表达式 函数式接口 方法引用 / 构造器引用 Stream API 接口中的默认方法 / 静态方法 新时间日期 API 其他新特性1.2 新特性速度更快 代码更少 强大的 Stream API 便于并行 最大化减少空指针异常 Optional (Kotlin ?)1.3 温故而知新 Hashmap 底层结构/原理老话题不再阐述 …(红黑树除了添加,其他操作都比纯链表快)原创 2020-08-07 10:36:53 · 292 阅读 · 0 评论