Java中HashSet类简介说明

转自:

Java中HashSet类简介说明

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

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

HashSet构造函数简介

HashSet() 
          构造一个新的空set,其底层HashMap实例的默认初始容量是16,加载因子是 0.75
HashSet(Collection<? extends E> 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);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值