首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java集合框架-LinkedHashSet

LinkedHashSet的特点LinkedHashSet是基于哈希表和链表实现的,其内部使用了一个哈希表来存储元素,并使用一个链表来维护元素的插入顺序。...LinkedHashSet相对于HashSet的优势在于可以维护元素的插入顺序,这意味着可以使用LinkedHashSet来按照元素的插入顺序遍历集合。...LinkedHashSet的常用方法LinkedHashSet继承自HashSet,因此除了维护插入顺序的功能外,其还拥有HashSet的所有特性和方法。...下面是LinkedHashSet常用的方法:boolean add(E e):向LinkedHashSet中添加一个元素,如果集合中已经包含该元素,则返回false。...LinkedHashSet的示例下面给出一个使用LinkedHashSet的示例,该示例演示了如何使用LinkedHashSet来去除字符串中的重复字符,并保留字符的原始顺序。

15310
您找到你想要的搜索结果了吗?
是的
没有找到

LinkedHashSet源码解析

那么在这一篇我们将学习LinkedHashSet集合的知识。在HashSet这篇文章中我们已经介绍过HashSet底层也是通过HashMap集合实现的。...所以我们通过LinkedHashSet集合的名字就基本可以猜到,LinkedHashSet集合底层应该就是用LinkedHashMap集合实现的。...这是因为只有LinkedHashMap这种集合的底层实现才能保证LinkedHashSet集合添加元素的顺序与访问元素的顺序一致,这也就是LinkedHashSet集合相比HashSet集合的一种独特的特性...还是和其它集合一样 ,我们首先看LinkedHashSet集合的初始化。 初始化 ? 下面我们看一下LinkedHashSet中add方法的底层实现。 ?...总结 LinkedHashSet集合可以保证添加元素的顺序与访问元素的顺序一致 LinkedHashSet集合不能保存相同的元素 LinkedHashSet集合并不是线程安全的集合类

39210

LinkedHashSet源码分析

一,LinkedHashSet源码分析 这里打算分析一下linkedHashSet的源码,也基本上把hashSet源码的方法实现过了一下,所以后面就不分析hashSet的源码了,其实这篇内容在我看来也仅仅帮助需要的人可以快速了解一下...set方法的基本实现,但是并不详细,理解hashSet的使用场景以及linkedHashSet的业务场景就非常有必要了。...2,方法分析 2.1,构造函数 (1) //构造一个默认容量为16,负载因子为0.75的hashSet public LinkedHashSet() { super(16,....75f, true); } (2) //其实hashset以及linkedHashSet底层实现都是map实现的,那我们继续~ HashSet(int initialCapacity...底层实现是基于hashMap实现的,我虽然分析了hashTable的源码,但却没有分析hashMap的源码,如果一上来就分析linkedHashSet的源码,也仅仅对其基本的方法做个大致的理解,本质上还是没有什么变化

34910

走近HashSet,TreeSet与LinkedHashSet

==Set接口是一种不包括重复元素的Collection,它维持它自己的内部排序,所以随机访问没有任何意义。== 本文基于1.8jdk进行源码分析。...Map的value与key构建成键值对 private static final Object PRESENT = new Object(); 其构造方法: //默认构造方法,根据其元素的自然顺序进行排序...super E> comparator) { this(new TreeMap(comparator)); } //构造一个新的空 TreeSet,它根据指定比较器进行排序。...extends E> c) { this(); addAll(c); } //构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。...LinkedHashSet LinkedHashSet内部是如何工作的 LinkedHashSet是HashSet的一个“扩展版本”,HashSet并不管什么顺序,不同的是LinkedHashSet会维护

50230

Java Review - LinkedHashMap & LinkedHashSet 源码解读

文章目录 Pre 概述 数据结构 类继承关系 构造函数 方法 get() put() remove() LinkedHashSet 使用案例 - FIFO策略缓存 ---- Pre Java Review...那同样的套路 , LinkedHashSet和LinkedHashMap在Java里也有着相同的实现,LinkedHashSet仅仅是对LinkedHashMap做了一层包装,也就是说LinkedHashSet...对于插入元素较多的场景,将初始容量设大可以减少重新哈希的次数 将对象放入到LinkedHashMap或LinkedHashSet中时,有两个方法需要特别关心: hashCode()和equals(...LinkedHashSet是对LinkedHashMap的简单包装,对LinkedHashSet的函数调用都会转换成合适的LinkedHashMap方法,因此LinkedHashSet的实现非常简单...{ ...... // LinkedHashSet里面有一个LinkedHashMap public LinkedHashSet(int initialCapacity, float

29820

死磕 java集合之LinkedHashSet源码分析

---- 问题 (1)LinkedHashSet的底层使用什么存储元素? (2)LinkedHashSet与HashSet有什么不同? (3)LinkedHashSet是有序的吗?...(4)LinkedHashSet支持按元素访问顺序排序吗? 简介 上一节我们说HashSet中的元素是无序的,那么有没有什么办法保证Set中的元素是有序的呢? 答案是当然可以。...总结 (1)LinkedHashSet的底层使用LinkedHashMap存储元素。 (2)LinkedHashSet是有序的,它是按照插入的顺序排序的。...传送门【死磕 java集合之LinkedHashMap源码分析】 那么,LinkedHashSet支持按元素访问顺序排序吗? 让我们一起来分析下。...所以,LinkedHashSet是不支持按访问顺序对元素排序的,只能按插入顺序排序

32540

Java集合框架之LinkedHashSet详解

与TreeSet相比,LinkedHashSet的元素不是按照自然排序或者指定的Comparator排序,而是按照插入顺序排序。...例如,在一个流式处理数据的应用中,需要对元素进行去重和排序操作。 避免并发修改异常: 在多线程程序中,使用LinkedHashSet可以避免并发修改异常。...缺点 LinkedHashSet的性能比HashSet略低,因为LinkedHashSet需要维护链表。 LinkedHashSet相对于TreeSet来说,缺少排序功能。...以下是一个通过迭代器遍历LinkedHashSet中元素的例子: // 创建一个LinkedHashSet LinkedHashSet set = new LinkedHashSet...相比于HashSet,LinkedHashSet可以保证元素插入顺序;相比于TreeSet,LinkedHashSet的元素不是按照自然排序或者指定的Comparator排序,而是按照插入顺序排序

23241

JAVA中HashSet、TreeSet和LinkedHashSet的比较

主要用于递归集合,返回一个Iterator()对象 remove( ) 从集合中去掉特定的对象 size( ) 返回集合的大小 JAVA中的set有三种:HashSet,TreeSet和LinkedHashSet...①HashSet的输出顺序是不确定的,但是它的速度最快; ②TreeSet输出顺序是升序排列的,相当于C++中的set,个人比较喜欢这种; ③LinkedHashSet输出顺序是确定的,就是插入时的顺序...TreeSet输出顺序是升序排列的,相当于C++中的set System.out.print("TreeSet的输出顺序:"); Cmp(set2); //LinkedHashSet...输出顺序是确定的,就是插入时的顺序 System.out.print("LinkedHashSet的输出顺序:"); Cmp(set3); } } 运行代码后结果如下...: HashSet的输出顺序:1 99 6 23 88 58 耗时(单位:纳秒):263293 TreeSet的输出顺序:1 6 23 58 88 99 耗时(单位:纳秒):554667 LinkedHashSet

95020
领券