Java中的LinkedHashSet解析

 更新时间:2023年11月01日 08:47:40   作者:兴趣使然的程序猿  
这篇文章主要介绍了Java中的LinkedHashSet解析,与HashSet不同的是,LinkedHashSet在内部使用了一个双向链表来维护元素的顺序,因此它可以保持元素的插入顺序,这使得LinkedHashSet在需要保持元素顺序的场景下非常有用,需要的朋友可以参考下

LinkedHashSet

LinkedHashSet用的也比较少,其也是基于Set的实现。

1 LinkedHashSet继承关系

在这里插入图片描述

和HashSet一样,其也是Set接口的实现类,并且是HashSet的子类。

2 LinkedHashSet源码

package java.util;
public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable {
    private static final long serialVersionUID = -2851667679971038690L;
    public LinkedHashSet(int initialCapacity, float loadFactor) {
    	//调用HashSet的构造方法
        super(initialCapacity, loadFactor, true);
    }
    public LinkedHashSet(int initialCapacity) {
        super(initialCapacity, .75f, true);
    }
    public LinkedHashSet() {
        super(16, .75f, true);
    }
    public LinkedHashSet(Collection<? extends E> c) {
        super(Math.max(2*c.size(), 11), .75f, true);
        addAll(c);
    }
    @Override
    public Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, Spliterator.DISTINCT | 	
Spliterator.ORDERED);
    }
}

其操作方法和HashSet完全一样,那么二者区别是什么呢?

1.首先LinkedHashSet是HashSet的子类。

2.LinkedHashSet中用于存储值的实现LinkedHashMap,而HashSet使用的是HashMap。LinkedHashSet中调用的父类构造器,可以看到其实列是一个LinkedHashMap。

HashSet(int initialCapacity, float loadFactor, boolean dummy) {
    map = new LinkedHashMap<>(initialCapacity, loadFactor);
}

LinkedHashSet的实现很简单,更深入的了解需要去看LinkedHashMap的实现,对LinkedHashMap的解析将单独提出。

到此这篇关于Java中的LinkedHashSet解析的文章就介绍到这了,更多相关LinkedHashSet解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现雪花算法的示例代码

    Java实现雪花算法的示例代码

    SnowFlow算法是Twitter推出的分布式id生成算法,主要核心思想就是利用64bit的long类型的数字作为全局的id。本文将用Java语言实现雪花算法,感兴趣的可以学习一下
    2022-03-03
  • zuulGateway 通过filter统一修改返回值的操作

    zuulGateway 通过filter统一修改返回值的操作

    这篇文章主要介绍了zuulGateway 通过filter统一修改返回值的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java线程的三种创建方式

    Java线程的三种创建方式

    这篇文章主要给大家分享的是ava线程的三种创建方式,Thread、Runnable和Thread、Runnable和Thread,想了解具体方式的小伙伴可以参考下面文章内容,希望对你有所帮助
    2021-11-11
  • 通过面试题解析 Java 类加载机制

    通过面试题解析 Java 类加载机制

    类加载是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。下面小编和大家来一起学习一下吧
    2019-05-05
  • JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal

    JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal

    这篇文章主要给大家介绍了关于JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Java使用正则表达式删除所有HTML标签的方法示例

    Java使用正则表达式删除所有HTML标签的方法示例

    这篇文章主要介绍了Java使用正则表达式删除所有HTML标签的方法,结合完整实例形式分析了java针对HTML页面元素script标签、style标签、html标签等的正则匹配相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • 2020最新版idea激活教程(推荐)

    2020最新版idea激活教程(推荐)

    这篇文章主要介绍了2020最新版idea激活教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Junit Mockito实现单元测试方法介绍

    Junit Mockito实现单元测试方法介绍

    JUnit是用于编写和运行可重复的自动化测试开源测试项目框架,这样可以保证我们的代码按与其工作。JUnit可广泛用于工业和作为支架(从命令行)或IDE(如IDE)内单独的java程序
    2022-09-09
  • java简单实现计算器

    java简单实现计算器

    这篇文章主要为大家详细介绍了java简单实现计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Java数据库连接池c3p0过程解析

    Java数据库连接池c3p0过程解析

    这篇文章主要介绍了Java数据库连接池c3p0过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论