`
arctg30
  • 浏览: 17716 次
  • 来自: ...
社区版块
存档分类
最新评论

HashSet与LinkedHashSet

阅读更多

HashSet定义

HashSet是在HashMap基础上实现的元素不重复的集合容器,定义如下:

......

private transient HashMap<E,Object> map;

......

其底层数据结构就是HashMap,数据以KEY的形式保存与map中。HashSet有如下三个构造函数:

public HashSet(int initialCapacity, float loadFactor) {
    map = new HashMap<E,Object>(initialCapacity, loadFactor);
}


public HashSet(int initialCapacity) {
    map = new HashMap<E,Object>(initialCapacity);
}

HashSet(int initialCapacity, float loadFactor, boolean dummy) {
    map = new LinkedHashMap <E,Object>(initialCapacity, loadFactor);
}
前两个构造函数,定义了底层数据结构为HashMap,第三个构造函数定义了底层数据结构为LinkedHashMap,事实上LinkedHashSet继承于HashSet,其构造函数为:

public LinkedHashSet(int initialCapacity, float loadFactor) {
        super(initialCapacity, loadFactor, true);
}

因此,LinkedHashSet底层的数据结构为LinkedHashMap。

 

总结

HashSet是在HashMap的基础上实现,LinkedHashSet是在LinkedHashMap基础上的实现,set中的方法包括遍历都是通过调用HashMap或LinkedHashMap上对应的方法来实现,是一种典型的代理模式。

分享到:
评论

相关推荐

    HashSet、LInkedHashSet的使用和特点

    HashSet、LInkedHashSet的使用和特点

    HashSet,TreeSet和LinkedHashSet的区别1

    本文主要探讨了三种基于Set接口的实现类:HashSet、LinkedHashSet和TreeSet,它们各自有不同的特性和使用场景。 首先,HashSet是最基础的Set实现,它不保证元素的特定顺序,也不保证在多次操作后保持元素的顺序不变...

    Java—Set集合详解(HashSet/LinkedHashSet/TreeSet/EnumSet)

    本文将深入探讨Java中四个主要的Set实现类:HashSet、LinkedHashSet、TreeSet以及EnumSet。 首先,Set集合的核心特性是不存储重复元素。在尝试通过`add()`方法添加相同元素时,如果集合中已经存在该元素,`add()`...

    CompleteJavaSourceCode

    - HashSet与LinkedHashSet的实现原理 - Collection与Iterable接口 - 泛型的使用与限制 5. **第5章:异常处理** - 异常分类:检查异常与运行时异常 - try-catch-finally结构 - throws关键字与throw语句 - ...

    java集合-LinkedHashSet的使用

    与 HashSet 不同的是,LinkedHashSet 保留了元素插入的顺序,并且具有 HashSet 的快速查找特性。下面是关于 LinkedHashSet 的一些重要信息: 有序性:LinkedHashSet 中的元素按照插入顺序进行排序,即元素被添加到...

    java面试复习资料整理,涵盖常见的面试题相关的知识

    - HashSet与LinkedHashSet:无序性与有序性的差异。 5. **多线程** - 线程的创建:通过Thread类和Runnable接口创建线程。 - 线程状态:新建、运行、阻塞、等待、终止等状态转换。 - 线程同步:synchronized...

    java面试题 IBM,交通银行等一些外包的面试题,(8K左右)

    - HashSet与LinkedHashSet:比较其存储和遍历的不同。 3. **多线程**: - 线程创建:通过Thread类和Runnable接口创建线程。 - 线程同步:熟悉synchronized关键字、wait/notify机制、ReentrantLock等工具。 - ...

    Java从入门到精通课后答案

    - **HashSet与LinkedHashSet**:无序集合,学习它们的特性及使用场景。 5. **IO流**: - **字节流与字符流**:用于读写文件,理解二进制与文本的区别。 - **缓冲区**:提高读写效率,减少磁盘I/O操作。 - **...

    JAVA很多公司面试题集合

    4. HashSet与LinkedHashSet:比较两者的元素存储和遍历顺序。 五、并发编程 1. 线程:理解线程的创建、状态转换及同步控制。 2. volatile关键字:知道其在多线程环境中的作用。 3. synchronized:掌握synchronized...

    java面试题目题目

    - HashSet与LinkedHashSet:理解它们的区别,特别是有序性和唯一性。 3. **多线程**: - 线程的创建:通过Thread类和Runnable接口创建线程。 - 线程同步:熟悉synchronized关键字、wait()、notify()和notifyAll...

    完整的java面试题

    - **HashSet与LinkedHashSet**:无序和有序集合,以及元素唯一性保证。 5. **异常处理** - **异常分类**:检查异常和非检查异常的区别。 - **try-catch-finally**:异常捕获和处理结构。 - **throw与throws**:...

    List 去重的6种方法(contains、迭代、hashSet、treeSet、linkedHashSet、stream)

    从代码和执行结果可以看出,LinkedHashSet 是到目前为止,实现比较简单,且最终生成的新集合与原集合顺序保持一致的实现方法 6:Stream去重(有序) Stream 实现去重功能和其他方法不同的是,它不用新创建集合,使用...

    HashSet的实现原理

    HashSet基于HashMap实现,但与HashMap不同的是,HashSet并不存储键(key),而是存储值(value),并且HashMap中键对应的值统一使用一个静态的、不变的Object实例来替代。这个静态实例被定义为HashSet的一个私有静态常量...

    hashset类的使用

    4. HashSet(int capacity, float fillRatio):除了初始容量,这个构造函数还允许用户定义一个填充比率(负载因子),它决定了当HashSet中的元素数量达到容量与填充比率的乘积时,HashSet的容量会进行扩展。...

    java中set、list和map的使用方法实例

    // set容器接口的实现类有HashSet和 LinkedHashSet两个 // HashSet不保证迭代顺序, LinkedHashSet按照元素插入的顺序迭代. // 学习List对象容器的使用 // List容器中的对象允许重复 // 常用的list接口的实现类有...

    JAVA容器讲解.pdf

    Java容器讲解PPT,Collection Map(HashMap TreeMap LinkedHashMap) List (ArrayList LinkedList Vector) Set (HashSet TreeSet LinkedHashSet)

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

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

    HDT-6:使用Java Collection Framework的第6号工作表

    2. **HashSet与LinkedHashSet**:两者都是Set接口的实现,不存储重复元素。HashSet基于哈希表,插入和查找速度较快,但元素顺序不确定;LinkedHashSet则保持了元素插入的顺序,牺牲了一些性能。 3. **HashMap与...

    Hutool常用方法api

    Collection&lt;Integer&gt; intersection = CollUtil.intersection(hashSet, linkedHashSet); // 交集 Collection&lt;Integer&gt; union = CollUtil.union(hashSet, linkedHashSet); // 并集 Collection&lt;Integer&gt; disjunction = ...

Global site tag (gtag.js) - Google Analytics