jdk1.8几个新特性(不全部)


参考文章: https://blog.csdn.net/qq_29411737/article/details/80835658

1. lambda表达式 : 接口中只有一个方法可以使用
Comparator cpt2 = (x,y) -> compare(x,y);
= (x,y) : 此处省略方法名和参数类型
-> 		: lambda标识符, 后面接 return 结果
compare(x,y) : 调用唯一方法, 返回结果

2. 函数式接口 : @FunctionalInterface
确保更好的使用lambda, 接口上加了这个注解, 但是有不止一个方法时会报错

3. Stream API
Stream操作的三个步骤
创建stream
中间操作(过滤、map)
终止操作

//创建stream
	//.stream()
    List<String> list = new ArrayList<>();
    Strean<String> stream1 = list.stream();

	//通过Stream类中的静态方法of
    Stream<String> stream3 = Stream.of("aa","bb","cc");

//中间操作(过滤、map)
//筛选 过滤  去重
.stream()
          .filter(e -> e.getAge() > 10)
          .limit(4)
          .skip(4)
          // 需要流中的元素重写hashCode和equals方法
          .distinct()
          .forEach(System.out::println);

//终止操作
查找和匹配
*          allMatch-检查是否匹配所有元素
*          anyMatch-检查是否至少匹配一个元素
*          noneMatch-检查是否没有匹配所有元素
*          findFirst-返回第一个元素
*          findAny-返回当前流中的任意元素
*          count-返回流中元素的总个数
*          max-返回流中最大值
*          min-返回流中最小值

//4. 在接口中可以使用default和static关键字来修饰接口中定义的普通方法
public interface Interface {
    default  String getName(){
        return "zhangsan";
    }

    static String getName2(){
        return "zhangsan";
    }
}

1.7版本中的接口实现类不用每个都重新实现新添加的接口方法,引入了default默认实现
static的用法是直接用接口名去调方法即可

//5. 在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化
在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化
原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的hashcode
方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容
如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在1.7的时候,后加的放在前面,形成一个链表,形成了碰撞,在某些情况下如果链表
无限下去,那么效率极低,碰撞是避免不了的
加载因子:0.75,数组扩容,达到总容量的75%,就进行扩容,但是无法避免碰撞的情况发生
在1.8之后,在数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入
除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾
ConcurrentHashMap (锁分段机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁分段),数组+链表中也引入了红黑树的使用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值