Java集合之LinkedHashSet集合详解

 更新时间:2023年09月04日 09:28:54   作者:秃头不秃头农  
这篇文章主要介绍了Java集合之LinkedHashSet集合详解,具有可预知迭代顺序的Set接口的哈希表和链表列表实现,此实现与HashSet不同的是,后者维护着一个运行于所有条目的双重链表列表,此链表定义了迭代顺序,需要的朋友可以参考下

一、LinkedHashSet简介

具有可预知迭代顺序的Set接口的哈希表和链表列表实现。

此实现与HashSet不同的是,后者维护着一个运行于所有条目的双重链表列表。此链表定义了迭代顺序。

LinkedHashSet集合中的方法和HashSet集合是一样,我们下面来看一看他们的区别是什么。

LinkedHashSet集合特点: 底层是一个哈希表(数组+链表/红黑树)+链表,多了一条链表记录元素存储的顺序,保证元素有序

二、实例操作

首先我们创建一个HashSet集合,让它存储几个数据

代码如下(示例):

        HashSet<String> set = new HashSet<>();
        set.add("abc");
        set.add("abc");
        set.add("dfg");
        set.add("hjk");
        System.out.println(set);

我们可以看到打印结果:

在这里插入图片描述

随后我们将dfg元素放到第一个位置:

        HashSet<String> set = new HashSet<>();
        set.add("dfg");
        set.add("abc");
        set.add("abc");
        set.add("hjk");
        System.out.println(set);

打印结果依旧不变:

在这里插入图片描述

随后我们在创建一个LinkedHashSet集合: 代码如下(示例):

        LinkedHashSet lset = new LinkedHashSet();
        lset.add("abc");
        lset.add("abc");
        lset.add("dfg");
        lset.add("hjk");
        System.out.println(lset);

打印结果我们发现:

在这里插入图片描述

但是当我们将dfg元素放到第一个位置时:

        LinkedHashSet lset = new LinkedHashSet();
        lset.add("dfg");
        lset.add("abc");
        lset.add("abc");
        lset.add("hjk");
        System.out.println(lset);

元素打印的顺序就会发生改变:

在这里插入图片描述

他的特点:不允许重复,元素有序。

因为他多了一个链表来存储元素顺序,我们只需要记住他的特点就可以

三、总结

LinkedHashSet 是 Java 中的一个集合类,它是 HashSet 的子类,并实现了 Set 接口。

与 HashSet 不同的是,LinkedHashSet 保留了元素插入的顺序,并且具有 HashSet 的快速查找特性。

它继承了 HashSet,所以在 HashSet 的基础上维护了元素添加顺序的功能。

LinkedHashSet 的构造方法是 LinkedHashSet()。

LinkedHashSet 是一个基于 LinkedHashMaa实现的有序去重集合列表。

它可以存储不重复的元素,并且维护了元素的添加顺序。LinkedHashSet 还可以存储 null 值。

需要注意的是,LinkedHashSet 是一个线程不安全的容器,所以在多线程环境下需要额外的同步措施。

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

相关文章

  • 详解ArrayBlockQueue源码解析

    详解ArrayBlockQueue源码解析

    这篇文章主要介绍了ArrayBlockQueue源码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • java  List循环与Map循环的总结

    java List循环与Map循环的总结

    这篇文章主要介绍了java List循环与Map循环的总结的相关资料,并附代码实例,帮助大家学习理解,需要的朋友可以参考下
    2016-11-11
  • java操作Redis缓存设置过期时间的方法

    java操作Redis缓存设置过期时间的方法

    这篇文章主要介绍了java操作Redis缓存设置过期时间的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • java处理解析带有反斜杠的json

    java处理解析带有反斜杠的json

    在Java中操作JSON数据是一项常见的任务,其中一个常见的问题是如何在JSON字符串中包含反斜杠,本文主要介绍了java处理解析带有反斜杠的json,感兴趣的可以了解一下
    2024-01-01
  • springBoot整合shiro如何解决读取不到@value值问题

    springBoot整合shiro如何解决读取不到@value值问题

    这篇文章主要介绍了springBoot整合shiro如何解决读取不到@value值问题,具有很好的参考价值,希望对大家有所帮助,
    2023-08-08
  • SpringBoot在idea中的 .idea和 .iml文件的作用

    SpringBoot在idea中的 .idea和 .iml文件的作用

    本文主要介绍了SpringBoot在idea中的 .idea和 .iml文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 浅谈Java中的高精度整数和高精度小数

    浅谈Java中的高精度整数和高精度小数

    本篇文章主要介绍了浅谈Java中的高精度整数和高精度小数,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java过滤器与监听器间区别与联系

    Java过滤器与监听器间区别与联系

    监听器是一个接口内容由我们实现,会在特定时间被调用,监听器用于监听web应用中三大域对象(request,session,application),信息的创建,销毁,增加,修改,删除等动作的发生,然后做出相应的响应处理
    2023-01-01
  • IDEA配置tomcat的方法、IDEA配置tomcat运行web项目详解

    IDEA配置tomcat的方法、IDEA配置tomcat运行web项目详解

    这篇文章主要介绍了IDEA配置tomcat的方法、IDEA配置tomcat运行web项目详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • SpringBoot通过计划任务发送邮件提醒的代码详解

    SpringBoot通过计划任务发送邮件提醒的代码详解

    在实际线上项目中,有不断接受到推送方发来的数据场景,而且是不间断的发送,如果忽然间断了,应该是出问题了,需要及时检查原因,这种情况比较适合用计划任务做检查判断,出问题发邮件提醒,本文给大家介绍了SpringBoot通过计划任务发送邮件提醒,需要的朋友可以参考下
    2024-11-11

最新评论