• 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);
    	}
    }
  • 相关阅读:
    山东大学人工智能导论实验一 numpy的基本操作
    WPF的DataGrid设置标题头
    3.03_python+Django+mysql实现pdf转word项目_项目部署-mod_wsgi安装配置
    jenkins结合126邮箱提醒
    《文化相对论》:危机重重的世界,对话才能产生转机
    Java——break、continue(学习笔记)
    将list中的对象转换为另一个类型的对象
    JAVA 字节运算 取低5位 获取低位第一位
    怎么用Java的代码制作简单的王者荣耀
    网络安全自学手册
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126399227