Java LinkedList和LinkedHashSet的区别
在这篇文章中,你将学习Java中LinkedList和LinkedHashSet之间的区别。
前提是: LinkedList。LinkedHashSet
LinkedList类实现了List和Deque接口,并扩展自AbstractSequentialList类。LinkedList类使用双链表来存储元素。它提供了一个链接列表的数据结构。
Java LinkedHashSet类是集合接口的哈希表和链接列表的实现。它继承了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()方法来比较元素。 -
空元素:
LinkedList允许任意数量的空值,而LinkedHashSet也允许最多一个空元素。 -
语法:
LinkedList的语法是: public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable
LinkedHashSet的语法是:public class LinkedHashSet extends HashSet implements Set, Cloneable, Serializable.
LinkedList的例子
// 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<String> object = new LinkedList<String>();
// 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<String> linkedset = new LinkedHashSet<String>();
// 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