Java-1129
admin
2024-03-03 17:24:05
0

Java8

  1. 新特性

    1. 速度更快
    2. 代码更少(lambda、stream)
    3. 强大的Stream API
    4. 便于并行
    5. 最大化减少空指针异常Optional
  2. 速度更快:对底层数据结构哈希map的优化

    在这里插入图片描述

    1. 解释说明hashmap基本原理
      1. hashmap本质是一个长度16的数组
      2. 元素的键值对以key:value的形式存储,当key相同时如果value不同则放入同一个key下的链表中,遵循先来的往后放的原则。在jdk1.8则是直接加在链表末尾
      3. hashcode方法:调用之后产生一个长串的哈希码值,码值再经过运算变成hashmap数组的索引值。
    2. hashMap在jdk8中底层实现原理与jdk7不同的说明:
      1. new HashMap(); 底层没有创建一个长度为16的数组。首次调用put()方法时才创建了长度为16的数组
      2. jdk8底层数组为: Node[] ,而非Entry[]
      3. jdk7的底层为: 数组+链表 而 jdk8的底层为: 数组+链表+红黑树
        1. 数组: 用来定位元素的位置
        2. 链表: 用来存储位置相同的元素
        3. 红黑树: 可以实现自平衡(旋转)
      4. 当数组的某一个索引位置上的元素以链表形式存储的数据个数>8,且当前数组元素总数的长度>64时,此时此索引位置上的所有数据改为使用红黑树存储;当在树上进行删除操作,使结点数等于6时,又自动转为链表存储
      5. 加载因子 :也叫扩容因子,就是当hashmap的实际包含元素达到初始化容量*加载因子时,hashmap会进行扩容,
      6. 加载因子0.75: 容量与性能的平衡结果,过大会引起更多冲突,过小会浪费太多空间。
    3. hashset的实现方式也相应改变了。
    4. ConcurrentHashMap也进行了升级,原本并发级别concurrentLevel = 16,改进后基本不用,使用CAS算法
    5. CAS无锁算法:一种乐观锁算法,销量更高,底层操作系统支持的算法。
  3. 速度更快2:底层内存结构也不一样

    1. 原本:栈、堆、方法区(堆中永久区的一部分,堆永久区主要加载类信息,几乎不会被垃圾回收区回收,只不过回收条件比较苛刻;)
      1. 堆的永久区:早在1.8之前,除sun版本的jvm其余JVM早已没有永久区,已经将方法区单独剥离出来永久区。
      2. 堆的永久区:1.8之后,彻底被干掉了,取而代之的是metaSpace元空间,它使用的是物理内存,而不是分配的内存,物理内存有多大,我就可以用多大,而不受限于分配空间。垃圾的清理取决于metaSpaceSize和MaxMetaSpaceSize
  4. 代码更少:Lambda表达式和Stream API

  5. 便于并行:对于pop、join进行了提升,从串行切换到并行

  6. 最大化减少空指针异常

    1. 提供了一个容器类Option,用于封装有可能为空的对象封装到容器类中提供解决方法
  7. 总之:最大的两个改动:lambda表达式和stream API

Lambda表达式

  1. 为什么使用lambda

    1. lambda是一个匿名函数,是一段可以传递的代码,也可以理解为函数参数。基本形式() -> {}

    2. 简化了很多无用的代码,例如:相比匿名内部类定义比较器

      		/*** 匿名内部类*/@Testpublic void test1(){//  匿名内部类实现接口,匿名内部类的实例作为参数Comparator com =  new Comparator() {@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};TreeSet ts = new TreeSet<>(com);}/*** lambda表达式*/@Testpublic void test2(){Comparator com = (x,y) -> Integer.compare(x,y);//	更简洁可以这样写TreeSet ts = new TreeSet<>(Integer::compare);}
      
    3. 对于一些重复代码可以使用相应的设计模式进行优化,例如定义比较器接口然后进行分别实现,不过代码量也不小。

    4. 总之就是一个词,简洁。

  2. Lambda基本语法

    1. lambda操作符:"->"也叫箭头操作符。左右侧分别为不同内容:
      1. 左侧:参数列表
      2. 右侧:所需执行功能,lambda体

相关内容

热门资讯

类似写真女友,圣诞之吻这样多线... 类似写真女友,圣诞之吻这样多线故事的动漫。另外缘之空我看过了。失忆症 《命运石之门》《寒蝉鸣泣之时...
小小蚁国小小蚁世界兑换码大全2... 小小蚁国小小蚁世界兑换码大全2023 全新礼包码整合大家好,今天为大家分享的是小小蚁国小小蚁世界兑换...
赞颂一碗鸡蛋面的说说? 赞颂一碗鸡蛋面的说说?俗话说:“民以食为天。”几乎每个地方都有自己的美味。你看:北京的烤鸭、西安的羊...
郑州做服装批发生意怎么样? 郑州做服装批发生意怎么样?好的很好.失败的也很多
卢文弨先是从秦涧泉那夺回拓片,... 卢文弨先是从秦涧泉那夺回拓片,后又在秦涧泉的灵前当场烧掉,让我们想起了哪句俗语?从秦涧泉的角度:没法...
求推荐一款高达模型mg 求推荐一款高达模型mg要求单眼的高达,用剑,速度型的单眼高达用剑速度型刚好有一款哦,mg的exia豪...
我喜欢的事你,你知不知道吖。你... 我喜欢的事你,你知不知道吖。你是真心喜欢我吗?以前只是不确定那种感觉。用广东话帮我翻译。膜中意雷,雷...
张少宇的不想说再见 歌词 ... 张少宇的不想说再见 歌词 急需急需 歌词 帮忙地下没有 不散的宴席陆野 每次相聚最后还是要...
原创 阳... 阳宗海露营地推荐:湖畔秘境与野趣体验 阳宗海作为昆明近郊的高原湖泊,周边分布着多个风格迥异的露营地...
春夜洛城闻笛 春夜洛城闻笛春夜洛城闻笛   【唐】 李白    谁家玉笛暗飞声,    散入春风满...
我和初恋女友分开六年了,从分手... 我和初恋女友分开六年了,从分手的那一刻我经常想起她,因误会,没有解释,现在她还单身,25岁来的及吗毕...
英雄联盟地图更新了? 英雄联盟地图更新了?嗯,大龙也改变了没有。。。。。。。。。。。。。。
求穿越1女 n 男文 不要女尊... 求穿越1女 n 男文 不要女尊 如果男主强势女尊也行奇遇记 风月宝鉴 天雨情
推荐几部外国大片 推荐几部外国大片近期的... 近期的 展开最近的:变形金刚2X-战警:金刚狼暮光之城:暮色哈利波...
武道至尊四大圣地叫什么 武道至尊四大圣地叫什么水水水水水水水水水水水水水水水水水水水水水水水水白月谷、清流阁就记得这两个
谁知道有部韩剧五六年以前播映的... 谁知道有部韩剧五六年以前播映的,大家帮忙看看电视剧的名字是什么!是不是情定大饭店啊不会是蓝色生死恋吧...
绝对黑体和平常说的黑色物体有何... 绝对黑体和平常说的黑色物体有何区别绝对黑体会100%吸收投射向它的所有光线,毫无反射,如同一个黑洞,...
«那年八岁»电影观后,欣慰孩子... «那年八岁»电影观后,欣慰孩子最终还是回到了学校«那年八岁»剧情概要: 小小八岁那年,被爸爸卖给了算...
电视剧:零下三十八度为什么取这... 电视剧:零下三十八度为什么取这个名字?你好!零下三十八度原名:38 Degrees Below Ze...
有一首歌曲叫暴风雨的叫什么名字 有一首歌曲叫暴风雨的叫什么名字第一句唱的好像是“我从来没经历过暴风雨”是一个女的唱的给个名字 链接非...