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解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot集成logback打印彩色日志的代码实现

    SpringBoot集成logback打印彩色日志的代码实现

    Logback是由log4j创始人设计的另一个开源日志组件,默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台,本文给大家介绍了SpringBoot集成logback打印彩色日志,需要的朋友可以参考下
    2024-03-03
  • java中对象和Map互相转换的几种常见方式举例

    java中对象和Map互相转换的几种常见方式举例

    Map在日常开发应用中的频率很高,最常用的实现类是HashMap和有序的TreeMap,下面这篇文章主要给大家介绍了关于java中对象和Map互相转换的几种常见方式举例,需要的朋友可以参考下
    2024-01-01
  • spring security CSRF防护的示例代码

    spring security CSRF防护的示例代码

    这篇文章主要介绍了spring security CSRF防护的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • SpringBoot利用自定义json序列化器实现敏感字段数据脱敏详解

    SpringBoot利用自定义json序列化器实现敏感字段数据脱敏详解

    这篇文章主要介绍了SpringBoot利用自定义json序列化器实现敏感字段数据脱敏详解,因为案例代码用到了hutool提供的DesensitizedUtil数据脱敏工具类,这里要引入hutool的依赖,如果你需要自定义 数据脱敏的逻辑,可以不引入这个依赖,需要的朋友可以参考下
    2024-01-01
  • java实现对excel文件的处理合并单元格的操作

    java实现对excel文件的处理合并单元格的操作

    这篇文章主要介绍了java实现对excel文件的处理合并单元格的操作,开头给大家介绍了依赖引入代码,表格操作的核心代码,代码超级简单,需要的朋友可以参考下
    2021-07-07
  • springboot yml配置文件值注入方式

    springboot yml配置文件值注入方式

    这篇文章主要介绍了springboot yml配置文件值注入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java wait和notify虚假唤醒原理

    Java wait和notify虚假唤醒原理

    这篇文章主要介绍了Java wait和notify虚假唤醒,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 解决springboot启动成功,但访问404的问题

    解决springboot启动成功,但访问404的问题

    这篇文章主要介绍了解决springboot启动成功,但访问404的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 手把手教你SpringBoot整合Mybatis

    手把手教你SpringBoot整合Mybatis

    这篇文章主要介绍了手把手教你SpringBoot整合Mybatis,Mybatis是一款持久化框架,可以帮我们省去大部分jdbc的代码,需要的朋友可以参考下
    2023-03-03
  • 在SpringBoot中无缝整合Dubbo的实现过程

    在SpringBoot中无缝整合Dubbo的实现过程

    微服务架构已经成为现代应用开发的热门趋势,而Dubbo作为一款强大的分布式服务框架,与Spring Boot的结合是构建高性能微服务应用的理想选择,本文将详细介绍如何在SpringBoot中无缝整合Dubbo,需要的朋友可以参考下
    2024-01-01

最新评论