1.lambda表达式:匿名内部类的简写 :(f) -> func(f);
2.接口中可以有非抽象方法,用default修饰
3.新增函数式接口:接口中只有一个抽象方法,接口使用注解@FunctionalInterface, 方便lambda表达式使用
4. lambda表达式和Stream接口对集合的操作:
* foreach: list.stream().forEach(x -> System.out.println(x))
* filter: list.stream().filter((s) -> s.startsWith("a")).forEach(System.out::println);
* sorted: list.stream().sorted().forEach(System.out::println); 要比较就要实现了Comparable<T>接口,并重写compareTo方法
* map:list.stream().map((user -> { user.setName(user.getName().toUpperCase()); return user; })).forEach(System.out::println);
* count: list.stream().count(); 使用该操作后,流就不存在了
* reduce: stream中的多个元素规约为一个元素
* list.stream()-->即进行串行操作,单线程。时间长 ;list.parallelStream()-->并行操作,多线程同时进行。需要时间短
5. 新的时间表达式: LocalDate、LocalTime、LocalDateTime、DateTimeFormatter
6.hashMap:原来底层是数组+链表,当链表个数大于8时,引入红黑树。新增了线程安全的hashMap:ConcurrentHashMap。