Chasel_s 最近去面试遇到了面试官问的很多问题,很多东西可能之后真正被人问过之后才会发现自己学了假的知识,
答对的就不说了,今天栽在java的数据结构上了,面试官今天问了我一个问题,数组和hashmap谁的效率快,为什么?
言归正传下面来解释。
很多时候面试一般会问hashmap和hashtable的速度谁快,这个一般面试java的人都会答上来,hashmap牺牲了
线程安全提高了效率,hashtable牺牲了效率换来了线程安全,之前还有一个面试官问了我一个问题,hashmap为什么
线程不安全,其实我是看过hashmap的源码的,我就给他解释源码,你们知道的之中解释是不在点上的,后来我回来
思考了一下发现回答其实很简单hashmap底层维护了一个数组,当多线程的时候对这个数组操作是不安全的。
下面就说说数组和hashmap谁的速度快,这其实是个坑,我其实当时回答其实对了一半,我说hashmap比数组快,
因为hashmap底层是使用一个链表实现的,所以速度快,很多时候我都是这么的只知其一不知其二,其实这种回答不全,
没错是快但是是在插入和删除的时候,在查询的时候因为数组有下标所以在查询集合中某个元素时,一般都会对数组干拜
下风。
Chasel_s对数据结构真的不是很懂,因为Chasel_s大学里面数据结构是在大一开的,那是还是菜鸟一枚,根本就没有
学会数据结构,看来以后要花一点时间补补。欢迎大佬们补充和指出问题。