看图了解java Map的几种实现
hash查找的低时间复杂度让map成为特别常用的容器,一起来看看不同jdk版本下的几种map实现
HashMap 1.8:
数组包含多个桶,每个桶由链表(桶元素<64个时)/二叉树组成
并发HashMap 1.6:
数组包含多个段(由并发数决定),在段上加锁,每段包含多个桶,桶由链表组成
专为支持并发访问设计,思路是用多个段来降低锁粒度,有几个线程就配置几个段
long作为key专用Map:
项目基于并发HashMap 1.6的个性化版本,将key从泛型调整为基本类型long,对于每个K-V至少能节省对象的头信息所占用的8byte空间
并发HashMap 1.8:
数组包含多个桶,在桶上加锁,每个桶由链表(桶元素<64个时)/二叉树组成
优化思路是进一步降低锁粒度,从锁有限的段变为锁桶,冲突的概率进一步降低
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Scala Symbol笔记
Symbol This class provides a simple way to get unique objects for equal strings. Since symbols are interned, they can be compared using reference equality. symbols可以作为一种快速比较字符串的方式,如果字符串的值相同,则返回的symbol变量具有相同的引用地址。Symbol内部维护了一个字符串池。 object SymbolDemo { def main(args: Array[String]): Unit = { val s = 'nihao val n = 'nihao // return true println(s == n) } } Compare to Java 在Java中创建String实例有两种方式:1、直接给一个变量赋值;2、用new关键创建String对象;(下文记作:方式1 和 方式2) 方式1 我们都知道 “方式1” 每次都会创建一个新变量(所以for循环内拼接字符串不建议用 “+” 操作符,因为每次...
- 下一篇
Java入门—输入输出流
File类的使用 文件是:文件可认为是相关记录或放在一起的数据的集合。 Java中,使用java.io.File类对文件进行操作 public class FileDemo { public static void main(String[] args) { String path = "E:\\pdd"; File f = new File(path); //判断是文件还是目录 System.out.println(f.isFile()); System.out.println(f.isDirectory()); } } image.png 对于File类还有其他很多方法的使用,建议在使用时进行查询文档。 字节流 字节输入流 :InputStream (读) 字节输出流 :OutputStream (写) image.png image.png FileInputStream 读取诸如图像数据的原始字节流,如图片,文件中的字节。 image.png image.png public class FileDemo { public static void main(String[] a...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题