HashMap、HashTable、ArrayList、定长数组之间的性能和速度比较

您所在的位置:网站首页 田径场高清壁纸 HashMap、HashTable、ArrayList、定长数组之间的性能和速度比较

HashMap、HashTable、ArrayList、定长数组之间的性能和速度比较

2023-06-27 00:30| 来源: 网络整理| 查看: 265

1、HashMap & HashTable 的速度谁快

HashMap 牺牲了线程安全提高了效率,HashTable 牺牲了效率换来了线程安全

2、HashMap 为什么线程不安全

HashMap 底层维护了一个数组,当多线程的时候对这个数组操作是不安全的。

3、ArrayList & HashMap 通过get() 取值谁速度更快

第一种原因:

ArrayList 底层由数组实现,list.get(index).当ArrayList 去按索引查找时。会先去数组里比对索引是否越界。然后再去找。耗时要比HashMap慢些.HashMap 由键值对存储,取值通过 map.get(key),当程序运行到此时会直接get(key)没有就返回null 。由于HashMap是允许存储空值空key的,但空key只能存储一个,所以当hashmap集合的值需要去做比对时不能使用equals。

ArrayList get(index)时会先调用rangeCheck()方法对索引进行判断ArrayList get(index)时会先调用rangeCheck()方法对索引进行判断 第二种原因: HashMap为什么比数组查询快   通常数组不直接保存值,而是通过保存值的list。然后对list中的“值”使用equals方法比较,这部分查询速度自然慢。但是如果有好的散列函数,数组的每个位置就只有较少的“值”。因此,不是查询所有的list,而是快速跳到数组的某个位置,只对很少的额元素进行比较,这就是HashMap会如此之快的原因。

4、定长数组是性能王者(集合里面最快的数据结构)

数组在内存中是连续存放的,所以性能很好。通过索引访问和更新元素时,不存在除范围检查之外的其他开销。 但插入元素和删除元素总是要进行数组复制。

5、Java里多个Map的性能比较

![在这里插入图片描述](https://img-blog.csdnimg.cn/f173a9aa700b40659ee6f1c8201ed4ac.png

TreeMap基于红黑树(一种自平衡二叉查找树)实现的,时间复杂度平均能达到O(log n)。HashMap是基于散列表实现的,时间复杂度平均能达到O(1)。ConcurrentSkipListMap是基于跳表实现的,时间复杂度平均能达到O(log n)

(原文链接:https://blog.csdn.net/debugingstudy/article/details/12716327)

6、HashMap夺命14问


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3