Java中LinkedList和LinkedHashSet的区别
在本文中,您将了解Java中 LinkedList 和 LinkedHashSet 之间的区别。
先决条件: LinkedList:LinkedHashSet
LinkedList 类实现 List 和 Deque 接口并从 AbstractSequentialList 类扩展。 LinkedList 类使用双向链表来存储元素。它提供了一个链表数据结构。
Java LinkedHashSet 类是一个哈希表和链表集合接口的实现。它继承了HashSet类并实现了Set接口。 Set 接口的 LinkedHashSet 实现,它们之间存在一些差异。
让我们看看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() 方法来比较元素。 - 空元素:
LinkedList 允许任意数量的空值,而 LinkedHashSet 也允许最多一个空元素。 - 句法:
LinkedList 语法是:公共类 LinkedList 扩展 AbstractSequentialList 实现 List、Deque、Cloneable、SerializableLinkedHashSet 语法是:
公共类 LinkedHashSet 扩展 HashSet 实现 Set、Cloneable、Serializable
链表示例:
// Java code for Linked List implementation
import java.util.*;
public class Test {
public static void main(String args[])
{
// Creating object of class linked list
LinkedList object = new LinkedList();
// Adding elements to the linked list
// and see carefully element are duplicate, null
object.add("A");
object.add("B");
object.addLast("C");
object.addFirst("D");
object.add(2, "E");
object.add(null);
object.add(null);
System.out.println("Linked list : " + object);
System.out.println("Size of List:" + object.size());
}
}
输出:
Linked list : [D, A, E, B, C, null, null]
Size of List:7
LinkedHashSet 示例:
import java.util.LinkedHashSet;
public class Demo {
public static void main(String[] args)
{
LinkedHashSet linkedset = new LinkedHashSet();
// Adding element to LinkedHashSet
linkedset.add("A");
linkedset.add("B");
linkedset.add("C");
linkedset.add("D");
System.out.println("Original LinkedHashSet:" + linkedset);
System.out.println("Size of LinkedHashSet = " + linkedset.size());
// trying to add duplicate
linkedset.add("A");
System.out.println("After adding duplicate element " + linkedset);
System.out.println("Size of LinkedHashSet = " + linkedset.size());
// trying to add null value more than one
linkedset.add(null);
linkedset.add(null);
System.out.println("After adding two null element " + linkedset);
System.out.println("Size of LinkedHashSet = " + linkedset.size());
}
}
输出:
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