hashmap和数组哪个速度快
Chasel_s 最近去面试遇到了面试官问的很多问题,很多东西可能之后真正被人问过之后才会发现自己学了假的知识,
答对的就不说了,今天栽在java的数据结构上了,面试官今天问了我一个问题,数组和hashmap谁的效率快,为什么?
言归正传下面来解释。
很多时候面试一般会问hashmap和hashtable的速度谁快,这个一般面试java的人都会答上来,hashmap牺牲了
线程安全提高了效率,hashtable牺牲了效率换来了线程安全,之前还有一个面试官问了我一个问题,hashmap为什么
线程不安全,其实我是看过hashmap的源码的,我就给他解释源码,你们知道的之中解释是不在点上的,后来我回来
思考了一下发现回答其实很简单hashmap底层维护了一个数组,当多线程的时候对这个数组操作是不安全的。
下面就说说数组和hashmap谁的速度快,这其实是个坑,我其实当时回答其实对了一半,我说hashmap比数组快,
因为hashmap底层是使用一个链表实现的,所以速度快,很多时候我都是这么的只知其一不知其二,其实这种回答不全,
没错是快但是是在插入和删除的时候,在查询的时候因为数组有下标所以在查询集合中某个元素时,一般都会对数组干拜
下风。
Chasel_s对数据结构真的不是很懂,因为Chasel_s大学里面数据结构是在大一开的,那是还是菜鸟一枚,根本就没有
学会数据结构,看来以后要花一点时间补补。欢迎大佬们补充和指出问题。
hashmap和数组哪个速度快相关推荐
- HashMap中数组初始化的秘密
2019独角兽企业重金招聘Python工程师标准>>> 我们知道,在新建一个HashMap对象时,无论传的initialCapacity参数值为多少,最总HashMap中数组的长度始 ...
- 2020-08-17:为什么HashMap中数组的容量为2的次幂?
2020-08-17:为什么HashMap中数组的容量为2的次幂? 前言 为什么HashMap中数组的容量为2的次幂? 前言 每日一题专栏 为什么HashMap中数组的容量为2的次幂? 因为在插入元素 ...
- 霍涛的HashMap由 数组 + 链表 组成
霍涛认为HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对.HashMap 的实现不是同步的,这意味着它不是线程安全的.它的 key.valu ...
- HashMap之数组下标计算
HashMap之数组下标计算 前提 loadFactor capacity threshold put时,数组下标计算 hash函数 putVal函数 核心计算 扩容时,下标的重置计算 前提 Hash ...
- HashMap如何计算数组下标
讨论 代码环境为JDK1.8.0 211 HashMap如何计算数组下标 首先我们看看String的hashCode是如何计算的(出自JDK1.8.0 211 java.lang.String 145 ...
- JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等
概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...
- hashmap 扩容是元素还是数组_HashMap的扩容机制---resize()
面试的时候闻到了Hashmap的扩容机制,之前只看到了Hasmap的实现机制,补一下基础知识,讲的非常好 原文链接: Hashmap是一种非常常用的.应用广泛的数据类型,最近研究到相关的内容,就正好复 ...
- esp8266接收到的数据如何存放到数组中_Java中HashMap的实现原理
最近面试中被问及Java中HashMap的原理,瞬间无言以对,因此痛定思痛觉得研究一番. 一.Java中的hashCode和equals 1.关于hashCode hashCode的存在主要是用于查找 ...
- java温故笔记(二)java的数组HashMap、ConcurrentHashMap、ArrayList、LinkedList
为什么80%的码农都做不了架构师?>>> HashMap 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型.随着JDK(Java Develo ...
最新文章
- R语言将字符型(Character)变量转化为数值型(Numeric)
- Zend Studio 8.0.1 官方汉化包安装 解决文本中文乱码
- 不是变量 win10_在win10下安装manim
- TurboMail邮件服务器荣膺“2012年度中国行业信息化最佳产品奖”
- boost::hana::transform用法的测试程序
- Java注解配置rest服务_Spring Boot 注解—常用注解
- java 类说明,java基础类型说明
- js 获取td高度_JS或jQuery获取宽高度
- jQuery 开始动画,停止动画
- Redis单机数据库实现
- 数据结构——数组以及n维数组
- ThrottleStop CPU频率调节
- R语言分组画条形图——qplot
- SpringBoot集成腾讯云短信实现注册/登录功能
- unity设置iOS手机震动
- 【时间复杂度】你还在担心时间复杂度太高吗?
- VPS云服务器搭建FTP并连接
- 拖库还是撞库?网易邮箱罗生门
- 计算机网络技术 选修 沪科版教案,高中物理第3章从电表电路到集成电路3.5逻辑电路与集成电路教案沪科版选修3_1...
- 登录服务器显示需要输入密码,远程服务器每次都需要输入账号密码