• Java中HashSet类简介说明


    转自:

    Java中HashSet类简介说明

    下文讲述HashSet类的功能简介说明,如下所示:

    HashSet是Java中使用数组+链表存储数据的一种存储结构,
    HashSet中根据hashcode和equals方法确定两个对象是否相同
    当两个对象的hashcode相同,并且equals方法也返回true,则我们界定为两个对象相同,并且不重复存储于HashSet中
    

    HashSet构造函数简介

    HashSet() 
              构造一个新的空set,其底层HashMap实例的默认初始容量是16,加载因子是 0.75
    HashSet(Collection c) 
              构造一个包含指定 collection 中的元素的新 set
    HashSet(int initialCapacity) 
              构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75) 
    HashSet(int initialCapacity, float loadFactor) 
              构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子 
    

    HashSet中常用方法

    equals()方法 
     用于判断两个对象是否相同
    hashCode() 
     hashCode()方法时为了实现HashSet和LinkedHashSet而实现的
    根据hash值,然后获取其散列index,获取其放入相应的数组位置
    toString()方法 
       toString()方法在打印对象时会调用,当不覆盖(override)toString()方法时,缺省情况下使用父类Object中的toString()方法
    compareTo()方法 
       用户类要实现Comparable接口
       这个方法主要用于将对象存放在TreeSet()时保证顺序的
    由于Comparable是接口,所以用户类必须要实现这个方法。 
    

    HashSet继承关系

    |--HashSet 底层是由HashMap实现的,通过对象的hashCode方法与equals方法来保证插入元素的唯一性,无序(存储顺序和取出顺序不一致),。
       |--LinkedHashSet 底层数据结构由哈希表和链表组成。哈希表保证元素的唯一性,链表保证元素有序。(存储和取出是一致)
    

    实现原理

    当向HashSet中添加元素的时
     HashSet会先调用元素的hashCode方法得到元素的哈希值,最后根据hash值获取对应的索引位置 
      1:当算出元素存储的位置目前没有任何元素存储,那么该元素可以直接存储到该位置上。
      2:当算出该元素的存储位置目前已经存在有其他的元素了
        此时会调用该元素的equals方法与该位置的元素再比较一次
    	  当equals返回的是true,那么该元素与这个位置上的元素就视为重复元素,不允许添加
          当equals方法返回的是false,那么该元素运行 添加
    

    例:

     
    package com.java265.other;
    import java.util.HashSet;
    public class Test {
    	public static void main(String[] args) throws Exception {
    		HashSet hs = new HashSet();
    		hs.add("java265.com-1");
    		hs.add("java265.com-2");
    		System.out.println(hs);
    	}
    }
  • 相关阅读:
    MySQL批量入库的几种方式详解
    Mysql之用户管理
    CLIP论文解读
    图床项目之FastDFS-Nginx fast-mod扩展模块原理
    Hive 表 DML 操作——Hive 表 DML 操作——第1关:将文件中的数据导入(Load)到 Hive 表中
    我辞掉程序员的工作,体验了半年的自驾游生活
    保证金监控中心查询期货开户密码
    压力测试+接口测试
    查有梁:天上有颗行星 名叫落下闳星
    图神经网络综述:模型与应用
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126399227