Java-1129

article/2025/8/28 16:21:42

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

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

  2. Lambda基本语法

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

http://chatgpt.dhexx.cn/article/OTH6MkgS.shtml

相关文章

如何用管理员权限打开CMD(快捷键)

近期给电脑重新装了win10系统&#xff0c;在使用cmd时发现执行一些命令提示我权限不够&#xff0c;需要管理员权限&#xff0c;有两种常用方法可以使用管理员权限打开cmd命令行&#xff1a; 第一种&#xff1a;搜索cmd应用&#xff0c;然后点击以管理员身份运行 第二种&#x…

Windows | 管理员权限打开CMD 快捷键

大家打开CMD一般用windows R&#xff0c;然后在运行框中输入cmd&#xff0c;接着Enter就好啦。 有时候安装啥东西需要管理员权限&#xff0c;运气不好&#xff0c;需要多次使用&#xff0c;每次操作都相比较麻烦&#xff0c;于是找了快捷键。 解决方法 和打开普通权限的CMD…

如何快速进入/打开cmd--快捷键

Windows系统快速进入cmd 1.WinR(win键在键盘左下角,ctrl和alt中间是个图标) 2.如何在一个目录内快速进入cmd? 2.1进入想要进入的目录 2.2直接在地址栏输入cmd 2.3回车即可进入cmd 3.在运行里面敲cmd也可进入 4.按住SHIFT鼠标右键可以在任意目录进入cmd 别忘了选择在此处打开…

cmd暂停快捷键_是否有键盘快捷键可以暂停正在运行的CMD窗口的输出?

cmd暂停快捷键 When running a batch script, you may need or want to pause the output in the CMD window so that you can look things over. Is there an easy way to pause, then restart the output? Today’s SuperUser Q&A post has the answer to help with a r…

cmd 实用快捷键。。

我相信大家用cmd时会感到很憋手蹩脚的。。什么CtrlC,CtrlV&#xff0c;都不能用。只能通过点击上面的边框通过编辑-->粘贴实现。其实并不需要这么做&#xff0c;在这里首先介绍几个简单的操作&#xff1a; 1.在cmd上点击右键&#xff0c;选中属性&#xff0c;在编辑选项中的…

【windows小技巧】快速以管理员的方式启动CMD窗口and使用快捷键启动管理员CMD窗口

启动CMD窗口想必很简单&#xff0c;大家都会&#xff0c;以管理员的方式启动CMD窗口&#xff0c;虽说有点麻烦&#xff0c;但是也不难。以上这两种方式还是有点麻烦&#xff0c;能不能直接快捷键一按就直接启动 【管理员&#xff1a;命令提示符】窗口呢&#xff1f; 一、具体操…

Win10 CMD命令大全与超好用的快捷键

一、Windows CMD 命令大全 按组合键 Win(Windows图标键)R 键打开运行窗口&#xff0c;输入“cmd”按回车即可打开cmd命令提示符 在窗口右击选择属性可进行个性化设置~ 1.calc&#xff1a;启动计算器2.appwiz.cpl&#xff1a;程序和功能3.certmgr.msc&#xff1a;证书管理实用…

windows里面cmd命令窗口常用快捷键命令

按组合键 Win(Windows图标键)R 键打开运行窗口&#xff0c;输入“cmd”按回车即可打开cmd命令提示符 1.calc&#xff1a;启动计算器 2.control&#xff1a;控制面版3.dvdplay&#xff1a;DVD播放器 4.explorer&#xff1a;打开资源管理器 5.Firewall.cpl&#xff1a;Win…

Windows快捷键使用和打开CMD的方式

Windows常用快捷键 Ctrl C : 复制 Ctrl V : 粘贴 Ctrl A &#xff1a;全选 Ctrl X &#xff1a;剪切 Ctrl Z &#xff1a;撤销 Alt F4 : 关闭窗口 Shift delete : 永久删除 Win R : 打开运行框 Win E : 打开我的电脑 Ctrl Shift esc &#xff1a;打开任务管理…

Windows常用快捷键和常用的cmd命令(亲测用了办公效率提升明显)

文章目录 Widows常用快捷键常用的运行窗口命令大全常用的cmd命令 Widows常用快捷键 Win D &#xff1a;回到桌面&#xff08;Win M也可以实现回到桌面&#xff0c;不过Win D 可以快速回到桌面&#xff0c;再按一次又能回到原网页&#xff0c;这是WinM做不到的。&#xff09;…

cmd命令快捷键

一、如何打开运行界面 1、直接使用快捷键WINR打开 2、在开始菜单的所有程序面板中找到“运行” 二、命令提示窗口使用技巧 1、自定义命令提示符的颜色     默认状况下&#xff0c;命令提示符是黑底白字显示的&#xff0c;要更改这两者的颜色其实非常简单&#xff0c;点…

教你用快捷键 以管理员身份运行cmd

方法一 系统自带的快捷键 WinR&#xff0c;打开运行&#xff0c;输入 cmd 按快捷键 ctrl shift enter 弹出的窗口点击是&#xff0c;即可以管理员身份运行cmd 方法二 自定义快捷键 打开win10自带的搜索&#xff0c;输入cmd 右键打开文件位置&#xff0c;找到命令提示符…

Windows上常用的32个cmd命令和26个常用快捷键

一.首先介绍一下&#xff1a;Windows 命令提示符&#xff08;即 cmd&#xff09;是 Windows 系统的一种命令行操作工具&#xff0c;用户可以通过输入命令来完成各种各样的系统或程序操作。 二.打开CMD命令提示窗口的方法 1.开始菜单 -> Windows 系统 -> 命令提示符 2.点…

cmd命令窗口快捷键与小技巧

一、常用快捷键&#xff1a; 1.F1&#xff1a;按F1一次&#xff0c;命令提示符向后切换到已经执行过的命令字符。如果已经是最后的一条的命令&#xff0c;则不进行任何切换操作。 例子&#xff1a;之前输入“node”&#xff0c;按F1一次后自动输入n&#xff0c;按两次自动输入o…

matlab解矩阵方程组

题意如下&#xff1a; 解方程组 对于一个初学者来说&#xff0c;刚上来是这样做的 然后不出意外报错了 后来根据课件想到了matlab中求逆矩阵的函数 inv&#xff08;A&#xff09;&#xff1b; 瞬间豁然开朗 所以说还是蛮简单的 做个笔记&#xff1a; ps&#xff1a;&#…

matlab解整数方程,用matlab怎样解方程组的整数解

共回答了18个问题采纳率&#xff1a;83.3% 程序&#xff1a; clear; clc; %abcde10 %290a470b720c1060d1490e6000 e0 floor(6000/1490); d0 floor(6000/1060); c0 floor(6000/720); index 0; cxd zeros(10,5); for cxde 0:e0 for cxdd 0:d0 for cxdc 0:c0 for cxdb 0:…

MATLAB求解方程和方程组

声明&#xff1a;本文章中数据来自清风老师数学建模课程 文章目录 MATLAB求解方程和方程组1、solve函数1.1 求解单变量方程1.2 多变量方程求解1.3 方程组的求解1.4 solve求解时可能出现的问题 2、vpasolve函数2.1 vapsolve的使用2.2 vpasolve解决一个更复杂的例子 三、fsolve函…

matlab 条件方程组的解,solve 时解方程组的限制条件问题

本帖最后由 oldlybaby 于 2017-5-28 14:43 编辑 简单来说&#xff0c;需要求解a1,a2,a3,但只有两个关于a1,a2,a3的方程f1,f2&#xff0c;附加条件是a1a2a3最小&#xff0c;请问怎么求解方程组&#xff0c;我的程序(方程有点长)如下 syms a1 a2 a3 ;复制代码 f1cos(a3)*(10*sin(…

10种基于MATLAB的方程组求解方法

线性方程组的求解包括直接法和迭代法&#xff0c;其中迭代法包括传统的高斯消元法&#xff0c;最速下降法&#xff0c;牛顿法&#xff0c;雅克比迭代法&#xff0c;共轭梯度法&#xff0c;以及智能启发式算法求解法和神经网络学习算法&#xff0c;传统算法可以相互组合改进&…

Matlab解五次以上方程,大侠帮忙,matlab解方程组 (5个方程,5个未知数)

共回答了17个问题采纳率&#xff1a;82.4% Asolve(1/lambda_s1/lambda_i-1/1064,n_p/1064-n_s/lambda_s-n_i/lambda_i-1/31500,n_p^2-(5.319725(4.753469e-7)*297.9100(0.09147285(3.310965e-8)*297.9100)/(1064^2-0.3165008^2)(100.2028(2.760513e-5)*297.9100)/(1064^2-11.73…