从Collection类下面有两个重要分支,List和Set接口,Se接口下是AbstractSet抽象类,下面有TreeSet和HashSet,我们今天就来介绍一下,HashSet的几种常用方法。
1、add方法,向HashSet集合中添加元素;
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();//调用HashSet无参构造方法——>创建HashMap对象并给map全局变量
set.add("Tom");//向HashSet集合中添加元素,HashSet add方法实质是map全局变量调用了put方法,将数据存到了key——→因为HashMap 的 key 不允许重复,所以HashSet添加的元素也不允许重复
set.add("Jerry");//注意:不会按照保存的顺序存储数据;遍历是不能保证下次结果和上次相同
}
}
对于HashSet的的参构造方法代码为——
public HashSet() {
map = new HashMap<>();
}
创建了HashMap对象并给map全局变量。
HashSet add方法源码如下
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
显然HasSet中的值都本质上是map调用put方法,变成了HashMap中的key,因为HashMap中key不允许重复,所以HashSet添加的元素也不允许重复。
2、size() :返回Set集合中的元素个数
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
System.out.println(set.size());//获取集合容器中有多少个元素
}
}
3、isEmpty() :如果Set不包含元素,则返回 true ,否则返回false
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
System.out.println(set.size());//获取集合容器中有多少个元素
System.out.println(set.isEmpty());//集合为空,true,反之则为false
}
}
4、remove(Object obj)方法,删除Set集合中的元素,删除成功返回true,否则返回false。
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
System.out.println(set.size());//获取集合容器中有多少个元素
System.out.println(set.isEmpty());//集合为空,true,反之则为false
set.remove("Tom") : 删除Set集合中的元素,删除成功返回true,否则返回false。
}
}
5、clear() : 移除此Set中的所有元素
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
System.out.println(set.size());//获取集合容器中有多少个元素
System.out.println(set.isEmpty());//集合为空,true,反之则为false
set.remove("Tom");
set.clear();
}
}
6、iterator() :返回在此Set中的元素上进行迭代的迭代器
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
System.out.println(set.size());//获取集合容器中有多少个元素
System.out.println(set.isEmpty());//集合为空,true,反之则为false
Iterator<String> iterator = set.iterator();//将HashSet中数据转存至iterator
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
7、contains(Object o):如果Set包含指定的元素,则返回 true,否则返回false
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
System.out.println(set.size());//获取集合容器中有多少个元素
System.out.println(set.isEmpty());//集合为空,true,反之则为false
Iterator<String> iterator = set.iterator();//将HashSet中数据转存至iterator
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
boolean flag = set.contains("Tom");//判断元素中是否包含参数指定对象
System.out.println(flag);
flag =set.remove("ABC");//删除元素,成功true
System.out.println(flag);
}
}
HashSet之中元素不允许重复
import java.util.HashSet;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("Tom");
set.add("Jerry");
set.add("Tom");//不允许存储重复数据
System.out.println(set.size());
}
}
最后输出结果是2。