zoukankan      html  css  js  c++  java
  • HashSet 和 LinkedSet 数据结构

    HashSet

    一、存储元素是无序的。注:无序指的是不按添加的顺序存储。

    二、HashSet集合的数据结构是:哈希表

      1、JDK1.8之前是:哈希表 = 数组 + 链表

      2、JDK1.8之后是:哈希表 = 数组 + 链表

               如果元素有哈希(值)冲突,导致根据哈希值分组之后的元素超过8个。链表就会变成红黑树,即:哈希表 = 数组 + 红黑树。目的是为了提高查询的速度。

    三、为什么不能存储相同元素:

      原因:添加元素的时候会调用hasCode和equals两个方法,如果都为true,就认为是相同的元素,就不添加到集合。

    四、如果需要存储自定义类型的元素,一定要重写hasCode和equals两个方法,这样才能保证集合中没有重复的元素。

    LinkedSet

    一、存储元素是有序的。注:有序指按添加元素的顺序展示元素。

    二、LinkedSet集合的数据结构:哈希表 = 数组 + 链表/红黑树 + 链表。多了一条链表,用来记录元素的存储顺序,保证元素是有序的。

  • 相关阅读:
    [Codeforces809D] Hitchhiking in the Baltic States
    [Codeforces1148H] Holy Diver
    [PKUWC2018]猎人杀
    [Codeforces566C] Logistical Questions
    越野赛车问题
    Suffix Array
    第05组(65) 需求分析报告
    第05组(65) 团队展示
    第三次作业
    结对编程作业
  • 原文地址:https://www.cnblogs.com/yinmu/p/15214692.html
Copyright © 2011-2022 走看看