JAVA-容器 HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

HashSet 底层声明了一个 HashMapHashSet 做了一层包装,操作 HashSet 里的元素时其实是在操作 HashMap 里的元素。TreeSet底层也是声明了一个 TreeMap,操作 TreeSet 里的元素其实是操作 TreeMap 里的元素。

HashSet 允许有 null 值。

HashSet 是无序的,即不会记录插入的顺序。

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。




//E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。

Set<E> sites = new HashSet<E>();

Serializable接口:

        ArrayList实现了java.io.Serializable接口,该接口主要是在序列化的时候起作用。

Cloneable接口:

        它允许在堆中克隆出一块和原对象一样的对象,并将这个对象的地址赋予新的引用,这样显然我对新引用的操作,不会影响到原对象。

        此类实现了Cloneable接口,以指示Object的clone()方法可以合法地对该类实例进行按字段复制。Object的clone()方法,提供的是一种浅克隆的机制,如果想要实现对对象的深克隆,可以引入第三方jar包等方式。


优势:

假如我们现在想要在一大堆数据中查找X数据。LinkedList的数据结构就不说了,查找效率低的可怕。ArrayList哪,如果我们不知道X的位置序号,还是一样要全部遍历一次直到查到结果,效率一样可怕。HashSet天生就是为了提高查找效率的。

散列码是由对象导出的一个整数值。在Object中有一个hashCode方法来得到散列码。基本上,每一个对象都有一个默认的散列码,其值就是对象的内存地址。但也有一些对象的散列码不同,比如String对象,它的散列码是对内容的计算结果。


JDK
Modifier and TypeMethod and Description
booleanadd(E e)

将指定的元素添加到此集合(如果尚未存在)。

voidclear()

从此集合中删除所有元素。

Objectclone()

返回此 HashSet实例的浅层副本:元素本身不被克隆。

booleancontains(Object o)

如果此集合包含指定的元素,则返回 true 。

booleanisEmpty()

如果此集合不包含元素,则返回 true 。

Iterator<E>iterator()

返回此集合中元素的迭代器。

booleanremove(Object o)

如果存在,则从该集合中删除指定的元素。

intsize()

返回此集合中的元素数(其基数)。

Spliterator<E>spliterator()

在此集合中的元素上创建late-binding故障快速 Spliterator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值