前言
HashSet中的值是无序不重复。
HashSet不是线程同步的。
HashSet 是由HashMap支持的(底层创建的HashMap)。
一、HashSet
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
二、使用
1.构造器
创建一个 HashSet
HashSet<Object> objects = new HashSet<>();
2.常用方法
2.1 增加 + 移除
add(E e)
如果此 set 中尚未包含指定元素,则添加指定元素。
remove(Object o)
如果指定元素存在于此 set 中,则将其移除。
add() 如果set中不存在则插入,并返回true
remove() 如果set中存在则移除,并返回true
HashSet<Integer> set = new HashSet<>();
// 插入成功返回true
boolean add = set.add(1); // true
boolean add2 = set.add(2); //true
System.out.println(set);
// 移除指定元素,成功返回true
boolean remove = set.remove(1); // true
System.out.println(set);
2.2 是否包含
contains(Object o)
如果此 set 包含指定元素,则返回 true。
如果包含某值则返回true,否则false。
HashSet<Integer> set = new HashSet<>();
boolean add = set.add(1);
boolean add2 = set.add(2);
// 判断是否包含
boolean contains = set.contains(1);
System.out.println(contains); // true
2.3 是否为空
isEmpty()
如果此 set 不包含任何元素,则返回 true。
set为空则返回true。
HashSet<Integer> set = new HashSet<>();
// 判断是否为空
boolean empty = set.isEmpty();
System.out.println(empty); // true
2.4 获取数量
size()
返回此 set 中的元素的数量(set 的容量)。
获取加入到set集合中值的数量。
HashSet<Integer> set = new HashSet<>();
boolean add = set.add(1);
// 获取set中的数量
int size = set.size();
System.out.println(size); // 1
2.5 遍历
iterator()
返回对此 set 中元素进行迭代的迭代器。
获取迭代器遍历set,或者使用增强for循环(foreach)语句遍历也可以。
HashSet<Integer> set = new HashSet<>();
boolean add = set.add(1);
boolean add2 = set.add(2);
// 使用迭代器遍历set
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
Integer e = iterator.next();
System.out.println(e);
}
// 使用增强for循环遍历set
for (Integer i : set) {
System.out.println(i);
}
最后
以上就是HashSet最常用的方法,其他还有很多方法也挺有用的,如果用到可以关注以一。
相关
更多常用类请查看:【Java SE 常用类】目录