当前位置: 首页 > 后端技术 > Java

Java常用数据结构分析

时间:2023-04-01 13:36:33 Java

1、HashMap和HashSetHashMapJDK1.8之前:HashMap的数据结构是数组+链表;越多越长,这样的话,在链表中查找数据的时间复杂度也会增加,影响性能。JDK1.8之后:HashMap的数据结构为数组+链表+红黑树;当链表长度超过8时,将链表转为红黑树。使用链表时,时间复杂度随长度线性增长,而使用红黑树时,时间复杂度呈对数函数增长。HashSetHashSet是基于HashMap实现的,是一个不允许重复元素的集合。HashSet允许空值。HashSet是无序的,即不记录插入顺序。HashSet不是线程安全的,如果多个线程同时尝试修改HashSet,最终结果是不确定的。当多个线程访问时,您必须显式同步对HashSet的并发访问。HashSet实现了Set接口。2、ArrayList和LinkListArrayListArrayList是一个可以动态修改的数组。与普通数组不同的是它没有固定的大小限制,我们可以添加或删除元素。LinkList链表(Linkedlist)是一种常见的基本数据结构。它是一个线性列表,但它并不是按线性顺序存储数据,而是存储每个节点中下一个节点的地址。链表可分为单链表和双向链表。单向链表包含两个值:当前节点的值和到下一个节点的链接。双向链表具有三个整数值:value、backwardnodelink、forwardnodelink。JavaLinkedList(链表)类似于ArrayList,是一种常用的数据容器。与使用LinkedList和ArrayList相比,LinkedList的增删操作效率更高,而查找和修改操作效率较低。因为在链表结构中,需要遍历整个链表进行查询,而在Array结构中,有下标,可以通过下标进行查找。但是在增删改查中,在链表中可以直接删除,但是在Array结构中,删除后需要调整下标。所以结构决定了性能的差异。