Java 中 LinkedList 与 LinkedHashSet 的区别

在本文中,我们将一起探讨 Java 中 LinkedList 和 LinkedHashSet 之间的区别。

前置知识: LinkedList : LinkedHashSet

LinkedList 类实现了 List 和 Deque 接口,并继承自 AbstractSequentialList 类。LinkedList 类使用双向链表来存储元素,它提供了一个链表数据结构。

Java 的 LinkedHashSet 类是 Set 接口的哈希表和链表实现。它继承自 HashSet 类并实现了 Set 接口。虽然 LinkedHashSet 实现了 Set 接口,但它们之间存在一些差异。

##### 让我们来看看 Java 中 LinkedList 和 LinkedHashSet 的区别

  • 继承关系:

!image

  • 内部工作原理

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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/21642.html
点赞
0.00 平均评分 (0% 分数) - 0