- java8允许我们给接口添加一个非抽象的方法,实现只需要使用default关键字即可,这个特征又叫做扩展方法。
- lambda表达式是一种简洁的语法,实际上是一个匿名函数,所有的lambda表达式都是用新的lambda运算符 “ => ” , 可以叫他“ 转到 ”或者“ 成为 ”。运算符将表达式分为两部分,左边指定指定输入参数,右边是lambda的主体,lambda表达式返回右边表达式的结果。
- 方法与构造函数引用:java8允许你使用 :: 关键字来传递方法或者构造函数引用。(class :: new表示引用构造方法)
- 函数式接口:lambda表达式映射到一个单方法的接口上,函数式接口是指仅仅只包含一个抽象方法的接口,定义了这种类型的接口使得以其为参数的方法。可以在调用时使用一个lambda表达式作为参数,也就是说在父类引用子类对象时,= 右边可以直接通过lambda表达式实现这个接口的唯一抽象方法,每一个该类型的lambda表达式都会匹配到这个抽象方法。
@FunctionalInterface
interface Converter<F,T>{
T convert(F from);
}
Converter<String,Integer> converter = (from) -> Integer.valueOf(from);
Integer converted = converter.convert("123")
System.out.printlnl(convertered)
- 访问局部变量,我们可以直接在lambda表达式中访问外层的局部变量。
final int num = 1;
Converter<Integer,String> stringConverter = (from) -> String.valueOf(from + num);
stringConverter.convert(2);
- hashmap中添加了红黑树的结构,,在冲突较多的情况下提高了查询时的性能。更多特性描述见此