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

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数据结构--13.Java8数据结构TreeSet.pdf

    Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...

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

    Set集合介绍 Set集合的概念   Set集合类似于一个容器,程序把很多对象保存到Set集合中...不保证元素的排列顺序,有可能排列顺序与添加顺序不同; 非同步集合,多线程访问HashSet时,是不安全的,需要通过同步代码保证

    CompleteJavaSourceCode

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

    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**:...

    java集合-LinkedHashSet的使用

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

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

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

    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集合框架完整说明便于了解集合

    java集合在日常开发中经常用到,对基础的掌握尤其重要,其中List,Set,Map的作用以及使用的场景和分类描述,其中Arraylist 与 LinkedList 区别,HashSet与TreeSet与LinkedHashSet对⽐,LinkedHashMap和HashMap,...

    Java集合框架Set接口.pdf

    Set接口的实现类包括HashSet、LinkedHashSet和TreeSet。 HashSet是基于哈希表实现的Set集合,它不保证集合中元素的顺序。由于哈希表的实现机制,HashSet的添加、删除和查找操作都具有很好的性能,时间复杂度为O(1)。...

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

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

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

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

Global site tag (gtag.js) - Google Analytics