首页 > 编程语言 >【29期】Java集合框架 10 连问,你有被问过吗?

【29期】Java集合框架 10 连问,你有被问过吗?

时间:2024-08-27 17:47:45浏览次数:7  
标签:10 Java HashMap 29 链表 线程 HashTable null Hashtable

1.HashMap和HashTable的区别?

HashMap 不是线程安全的
HashMap 是 map 接口的实现类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap 允许 null key 和 null value,而 HashTable 不允许。
HashTable 是线程安全 Collection
HashMap 是 HashTable 的轻量级实现,他们都完成了Map 接口,主要区别在于 HashMap 允许 null key 和 null value,由于非线程安全,效率上可能高于 Hashtable。

区别:
HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsValue 和 containsKey。因为 contains 方法容易让人引起误解。
HashTable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。
HashTable 的方法是 Synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。

2.说一下 HashMap 的底层结构?

HashMap由数组+链表组成的。
数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度为O(n),首先遍历链表,存在即覆盖,否则新增;对于查找操作来讲,仍需遍历链表,然后通过key对象的equals方法逐一比对查找。所以,性能考虑,HashMap中的链表出现越少,性能才会越好。
3.为什么HashMap是线程不安全的

标签:10,Java,HashMap,29,链表,线程,HashTable,null,Hashtable
From: https://www.cnblogs.com/kisshappyboy/p/18383239

相关文章

  • Java语言-SpringCloud架构-EMS能源管理系统(水-电-气-热-油等数据采集分析系统)
    Java语言-SpringCloud架构-EMS能源管理系统(水-电-气-热-油等数据采集分析系统)介绍适用于高能耗企业、建筑、工厂、园区的水、电、气、热、油、空压机等能源数据采集、分析、报表;基于SpringCloud的能源管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud......
  • Java语言-SpringBoot框架-充电桩管理系统+充电桩平台+充电桩+充电桩系统源码
    Java语言-SpringBoot框架-充电桩管理系统+充电桩平台+充电桩+充电桩系统源码####简述SpringBoot框架,充电桩平台+充电桩系统+充电平台+充电桩+互联互通协议+云快充协议1.5-云快充1.6协议+新能源汽车+电动自行车+公交车-四轮车充电+充电源代码+充电平台源码+Java源码+无加密项......
  • 【全面剖析】张宇1000题难度大吗?值不值得做?
    在考研数学的备考征程中,张宇考研数学题源探析经典1000题一直备受关注,许多考生都在纠结它的难度以及是否值得投入宝贵的复习时间去钻研。作为一个考研上岸的过来人,下面我将从以下几个方面来对这本习题集进行分析,希望能够对你有所帮助。一、题库分析知识覆盖全面且深入张......
  • 13.3 Java对象序列化梳理
    目录13.3Java对象序列化13.3.1 引入13.3.1 对象序列化与对象流1.Serializable接口2.ObjectInputStream类和ObjectOutputStream类13.3.2向ObjectOutputStream中写入对象13.3Java对象序列化13.3.1 引入应用场景:对象的寿命通常随着创建该对象程序的终止而终......
  • 关于java中Stream理解
    关于java中Stream理解Stream是什么Stream:Java8新增的接口,Stream可以认为是一个高级版本的Iterator。它代表着数据流,流中的数据元素的数量可以是有限的,也可以是无限的。Stream跟Iterator的差别是无存储:流是基于数据源的对象,它本身不存储数据元素,而是通过管道将数据源的元素......
  • 10W级并发Mysql优化
    批量插入(BatchInsert)批量处理:将多条数据合并成一个INSERT语句,一次性批量插入。这样可以显著减少数据库的交互次数,提高性能。INSERTINTOyour_table(column1,column2,...)VALUES(value1,value2,...),(value3,value4,...)批量大小:通常建议每批次的大小在几百到几......
  • JavaScript 对象构造器
    <!DOCTYPEhtml><htmllang="en"><body><pid="demo"></p><script>functionPerson(first,last,age,like){this.firstName=first;this.lastName=last;......
  • 窥探API接口开放平台成功的10个原则!
    API接口开放平台的简介API接口开放平台是一个允许外部开发者访问和使用特定服务或应用功能的在线平台。通过开放API接口,平台提供方能够允许第三方开发者利用其数据、功能或资源来开发新的应用、工具或服务,从而丰富用户体验,促进技术创新和业务增长。API接口开放平台的原理......
  • [1051] What is RESTful API?
    ref:WhatisRESTfulAPI?WhatisRESTfulAPI?RESTfulAPIisaninterfacethattwocomputersystemsusetoexchangeinformationsecurelyovertheinternet.Mostbusinessapplicationshavetocommunicatewithotherinternalandthird-partyapplications......
  • [开题]flask框架信息安全知识学习微信小程序10fhc(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化时代,信息安全已成为社会经济发展的重要基石。随着移动互联网的普及,微信小程序作为一种轻量级的应用形态,迅速渗透到人们的日常生活......