java的HashSet
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。如果想了解HashMap可以去看我的这篇博客。
HashSet 允许有 null 值,且是无序的。
HashSet 不是线程安全的, 如果多个线程同时修改 HashSet,那么最终的结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类,而自己定义的类和String则可以直接作为他的元素使用。
基本类型和他的包装类的对应情况如下所示:
基本类型 | 引用类型 |
---|---|
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
引用:
import java.util.HashSet; // 引入 HashSet 类
初始化:
HashSet<String> sites = new HashSet<String>();
//如果是int类型,那么就是
HashSet<Integer> nums = new HashSet<Integer>();
//如果是自己定义的比如Animal类,那么就是
HashSet<Animal> animals = new HashSet<Animal>();
HashSet的增删查
增(add)
// 引入 HashSet 类
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("www.baidu.com");
sites.add("www.hstc.edu.cn");
sites.add("wx.qq.com");
sites.add("mail.qq.com");
sites.add("www.baidu.com"); // 重复的元素不会被添加
System.out.println(sites);
}
}
显示如下:
可见,只剩下一个www.baidu.com了,因为他是不可重复的,而且顺序也跟我们添加的不太一样,究其原因,则是因为他是无序的。
删(remove)
方法:remove,删除成功返回true,失败返回false。
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("www.baidu.com");
sites.add("www.hstc.edu.cn");
sites.add("wx.qq.com");
sites.add("mail.qq.com");
sites.add("www.baidu.com"); // 重复的元素不会被添加
System.out.println(sites);
//删除
sites.remove("www.hstc.edu.cn");
System.out.print("删除www.hstc.edu.cn后:");
System.out.println(sites);
}
}
显示:
查(contains)
方法:contains,存在返回true,不存在返回false
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("www.baidu.com");
sites.add("www.hstc.edu.cn");
sites.add("wx.qq.com");
sites.add("mail.qq.com");
sites.add("www.baidu.com"); // 重复的元素不会被添加
System.out.println(sites);
//查,判断某元素是否在其中
System.out.print("判断某元素是否存在:");
System.out.println(sites.contains("wx.qq.com"));
}
}
显示:
HashSet的迭代
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
sites.add("www.baidu.com");
sites.add("www.hstc.edu.cn");
sites.add("wx.qq.com");
sites.add("mail.qq.com");
sites.add("www.baidu.com"); // 重复的元素不会被添加
System.out.println(sites);
for(String site : sites){
System.out.println(site);
}
}
}
显示:
HashSet的长度(size())
想知道HashSet的长度,只需要调用其方法size()即可。