数据结构
栈(stack)
特点:先进后出
队列(queue)
特点:先进先出
数组(Array)
特点:查询快,增删慢
原因:查询快是因为数组是有索引的,而且索引是连续的,所以很容易查询到相关对象
增删慢是因为数组的长度是固定的,一旦创建后其长度就不可变。想要增加或者删除就必须要重新创建一个数组。
链表
特点:增删快,查询慢
原因:增删快的原因是每一个元素都是依靠地址值进行连接,如果想要增加/删除一个元素,只需要在这个元素的前后元素上添加/删除这个元素的地址值即可,无需重新创建。
查询慢是因为链表没有索引,如果要查询一个元素,就要从一开始依次查询。
树(红黑树)
特点:查询的速度非常快
哈希表
特点:查询速度特别的快
原因:在JDK1.8之前,底层使用的是数组+链表
在JDK1.8之后,底层使用的是数组+链表+红黑树
如果相同哈希值对应的元素个数达到8个,则将链表改为红黑树,也就 是数组+红黑树,因为红黑树查询的效率更高,同一个哈希值对应的元素个数没有达到8个,则使用数据+链表的形式。