在本文中,我们将一起探讨 Java 中 LinkedList 和 LinkedHashSet 之间的区别。
前置知识: LinkedList : LinkedHashSet
LinkedList 类实现了 List 和 Deque 接口,并继承自 AbstractSequentialList 类。LinkedList 类使用双向链表来存储元素,它提供了一个链表数据结构。
Java 的 LinkedHashSet 类是 Set 接口的哈希表和链表实现。它继承自 HashSet 类并实现了 Set 接口。虽然 LinkedHashSet 实现了 Set 接口,但它们之间存在一些差异。
##### 让我们来看看 Java 中 LinkedList 和 LinkedHashSet 的区别
- 继承关系:
- 内部工作原理
Java LinkedList 类使用双向链表来存储元素,而 LinkedHashSet 内部使用 LinkedHashMap 来存储其元素。
- 元素唯一性:
LinkedList 类可以包含重复的元素,而 LinkedHashSet 像 HashSet 一样仅包含唯一的元素。
- 插入方式:
对于双向链表 LinkedList,我们可以从两端添加或删除元素,而 LinkedHashSet 总是在末尾插入元素。
- 构造函数:
LinkedList 有两个构造函数:LinkedList() 和 LinkedList(Collection o);而 LinkedHashSet 有四个构造函数:HashSet()、HashSet(Collection c)、LinkedHashSet(int capacity) 和 LinkedHashSet(int capacity, float fillRatio)。
- 插入、移除和检索操作:
LinkedList 的插入、移除和检索操作的性能复杂度为 O(n),而 LinkedHashSet 对于插入、移除和检索操作的性能复杂度为 O(1)。
- 元素比较:
LinkedList 使用 equals() 方法,LinkedHashSet 也使用 equals() 和 hashCode() 方法来比较元素。
- Null 元素:
LinkedList 允许任意数量的 null 值,而 LinkedHashSet 最多允许一个 null 元素。
- 语法:
LinkedList 的语法如下:
public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable
LinkedHashSet 的语法如下:
public class LinkedHashSet extends HashSet implements Set, Cloneable, Serializable
LinkedList 示例:
JAVA
CODEBLOCK_6d698607
输出:
Linked list : [D, A, E, B, C, null, null]
Size of List:7
LinkedHashSet 示例:
JAVA
CODEBLOCK_4c675547
输出:
Original LinkedHashSet:[A, B, C, D]
Size of LinkedHashSet = 4
After adding duplicate element [A, B, C, D]
Size of LinkedHashSet = 4
After adding two null element [A, B, C, D, null]
Size of LinkedHashSet = 5