Java 提供了丰富的数据结构来处理和组织数据,Java的 java.util 包中提供了许多这些数据结构的实现,可以根据需要选择合适的类。
List(列表)
ArrayList:基于动态数组的数据结构,允许包含重复元素和 null。
List<String> arrayList = new ArrayList<>();
LinkedList:基于链表的数据结构,支持快速的插入和删除操作,但在随机访问方面效率较低。List<Integer> linkedList = new LinkedList<>();
Vector:类似于 ArrayList,但它是线程安全的(同步的)。
Stack:继承自 Vector,提供了后进先出(LIFO)的栈数据结构。
Stack<Integer> stack = new Stack<>();
Set(集合)
HashSet:基于哈希表的数据结构,不允许包含重复元素,并且不保证元素的顺序。
Set<String> hashSet = new HashSet<>();
LinkedHashSet:类似于 HashSet,但维护了元素的插入顺序。
TreeSet:基于红黑树的数据结构,不允许包含重复元素,元素按自然顺序或指定的比较器排序。
Set<Integer> treeSet = new TreeSet<>();
Queue(队列)
PriorityQueue:基于优先级堆的数据结构,不支持 null 元素,元素按优先级顺序出队。
ArrayDeque:一个双端队列,支持在两端进行高效的插入和删除操作。
LinkedList:也可以用作队列(通过 offer、poll 等方法)。
Queue<String> queue = new LinkedList<>();
ConcurrentLinkedQueue:一个基于链接节点的无界线程安全队列。
Map(映射)
HashMap:基于哈希表的数据结构,允许一个 null 键和多个 null 值。
Map<String, Integer> hashMap = new HashMap<>();
LinkedHashMap:类似于 HashMap,但维护了键值对的插入顺序或访问顺序。
TreeMap:基于红黑树的数据结构,不允许包含重复的键,按键的自然顺序或指定的比较器排序。Map<String, Integer> treeMap = new TreeMap<>();
Hashtable:类似于 HashMap,但它是线程安全的(同步的),且不允许 null 键或 null 值。
ConcurrentHashMap:一个线程安全的哈希映射,支持高效的并发访问。