`
macken
  • 浏览: 346187 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HashSet、LinkedHashSet 实现原理

    博客分类:
  • Java
 
阅读更多

之前没用过HashSet,听到别人提到HashSet,看了下源码,HashSet基本是将HashMap进行了一层封装,通过一个静态变量实现了不允许存储相同key

add方法实现

 

public boolean add(E e) {
	return map.put(e, PRESENT)==null;
    }
 private static final Object PRESENT = new Object();
 

每个存入的key,在HashMap中的value是一个静态对象,当下次再存入时,如果原来已经存入过时,map.put(K,V)会返回一个oldValue不为null,即添加失败,但是map中实际上进行了一次更新;

 

LinkedHashSet实现原理

LinkedHashSet继承HashSet,在HashSet里面有这样一个构造函数

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

 LinkedHashSet初始化时,会调用HashSet的这个构造函数,那么LinkedHashSet使用了LinkedHashMap的实现

这么看呢,LinkedHashSet的遍历速度要比HashSet高

 

2
1
分享到:
评论

相关推荐

    HashSet的实现原理

    总的来说,HashSet的实现原理是通过委托给HashMap来实现元素的存储、管理和操作。它充分利用了HashMap高效的数据结构特性,为Java集合框架中实现无序集合提供了一个高效的选择。掌握HashSet的实现原理对于Java开发者...

    hashset类的使用

    在Java语言中,HashSet类是集合框架的重要组成部分,属于Set接口的一个实现。它基于哈希表的原理来存储不重复的元素...如果需要一个有序集合,可以考虑使用LinkedHashSet类,它在HashSet的基础上维护了元素的插入顺序。

    集合类HashSet

    在Java编程语言中,集合类是用于存储一组...在黑马程序员_毕向东_Java基础视频教程中,你可能会更详细地学习到关于HashSet的实现原理和实战技巧。通过观看相关视频和实践操作,可以加深对HashSet的理解,提升编程能力。

    深入Java集合学习系列

    "深入Java集合学习系列:LinkedHashSet的实现原理 - 莫等闲 - ITeye技术网站.mht"将介绍如何在HashSet的基础上添加链表结构以保持元素顺序。 通过这个系列的学习,开发者可以更好地理解Java集合框架的底层机制,...

    集合的概念及应用和HashSet保证数据不重复的原理

    今天我们将深入探讨“集合”的概念及其应用,以及HashSet如何保证数据不重复的原理。 首先,集合是一种可以容纳多个对象的容器,这些对象可以是任意类型,只要它们实现了特定接口,如Comparable或Serializable。...

    ThinkinginJava之Set接口、HashSet源码学习.pdf

    HashSet类实现了Set接口,其内部基于HashMap来存储和管理元素。这意味着HashSet的性能和特性与HashMap紧密相关。由于HashMap使用哈希表结构,HashSet能够快速地插入、查找和删除元素,时间复杂度通常为O(1)。 ...

    集合底层原理总结

    - **Set接口**:同样继承自Collection接口,特点是元素无序且唯一,常见的实现类有HashSet和LinkedHashSet。 - **Map接口**:存储键值对的数据结构,键Key唯一,无序,常见的实现类有HashMap、TreeMap和...

    JavaSE专题-Set集合.doc

    Set集合是JavaSE中的一种重要数据结构,主要包括HashSet、TreeSet和LinkedHashSet三个子类。下面我们将对Set集合的原理、特点、使用场景等进行详细的探索和分析。 HashSet HashSet是Set集合中的一种重要实现类,...

    对java基础集合部分(List、HashMap、HashSet、ArrayList等)底层源码的分析与总结

    LinkedHashSet与HashSet相似,但保留了插入顺序,通过维护一个双向链表来实现。 TreeSet则实现了SortedSet接口,内部使用红黑树数据结构,保证元素有序。我们可以使用自定义的比较器或对象的自然排序规则进行排序。...

    Java基础学习25.pdf

    4. **LinkedHashSet实现**:LinkedHashSet继承于HashSet,并且通过维护一条双向链表来记录插入顺序,因此提供了元素插入顺序的保持。它的底层实现是LinkedHashMap,后者是基于HashMap和双向链表的实现。 5. **...

    Java面试总结,Redis宕机数据丢失解决方案,看完这篇彻底明白了.docx

    * HashSet和LinkedHashSet都是基于哈希表实现的,但是LinkedHashSet还维护了元素的插入顺序 3. 快慢指针方法的使用 * 快慢指针方法用于解决链表中间节点的访问问题 四、Java框架和数据库 1. Spring中的循环依赖...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    ava基础 基础知识 面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 ...Java集合详解7:HashSet,TreeSet与LinkedHashSet Java集合详解8:Java集合类细节精讲 JavaWeb

    对Java中Set的深入研究.pdf

    Set接口继承自Collection接口,并提供了多种实现类,如HashSet、LinkedHashSet、TreeSet和CopyOnWriteArraySet等。这些实现类各自有不同的特性和使用场景。 1. 实现类详解: - `CopyOnWriteArraySet`:这个类基于`...

    Java集合框架常用集合源代码及其实现

    `LinkedHashSet`则在保持元素插入顺序的同时提供`HashSet`的功能。`TreeSet`则是基于红黑树的实现,提供了排序功能。 `Queue`接口代表了先进先出(FIFO)的数据结构,`ArrayDeque`和`LinkedList`都可以作为队列使用...

    Java面试全方位复习攻略,详解集合框架,hashmap底层原理,多线程,消息队列,radis,spring-boot ,Spring-cloud技术,等等

    Set接口的主要实现类包括HashSet、LinkedHashSet和TreeSet。HashSet底层使用HashMap来存储元素,所以它是无序且没有索引的,元素具有唯一性。LinkedHashSet基于HashSet,并额外维护了一个双向链表记录插入顺序,而...

    Java 集合学习指南 - v1.1.pdf

    本指南将深入探讨HashMap、HashSet、HashTable、LinkedHashMap、LinkedHashSet、ArrayList、LinkedList、ConcurrentHashMap等主要集合类的实现原理,以及它们在实际应用中的选择与比较。 首先,HashMap是最常用的...

    就业班JavaSE-day08每日作业卷1

    HashSet去除重复元素的原理是通过元素的hashCode和equals方法。首先,根据对象的hashCode()方法确定对象在HashSet中的位置;然后,如果两个对象的hashCode相同,会调用equals()方法来判断它们是否相等。只有当两个...

    set-collections-map

    Set接口主要有三种实现类:`HashSet`、`LinkedHashSet`以及`TreeSet`。 ##### 1.1 认识Set集合的特点 - **HashSet**:基于哈希表的实现,不保证元素的顺序,不允许重复元素。 - **LinkedHashSet**:基于哈希表和...

    Java集合框架常见面试题.pdf

    - Set接口的主要实现类有HashSet、LinkedHashSet和TreeSet。 - HashSet是基于HashMap实现的,插入效率高,但不保证元素的顺序。 - LinkedHashSet在HashSet的基础上,通过链表维护了元素的插入顺序。 - TreeSet则...

Global site tag (gtag.js) - Google Analytics