HashSet类,是存在于java.util包中的类 。同时也被称为集合,该容器中只能存储不重复的对象。本文主要介绍Java HashSet使用方法教程及示例代码,还有HashMap和HashSet的区别。
HashSet
实现了Set接口,它不允许集合中有重复的值,当将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存重复的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。
例如:
创建一个名为langs的HashSet对象,该对象将存储字符串:
import java.util.HashSet; // 导入HashSet HashSet<String> langs = new HashSet<String>();
HashSet
类具有许多有用的方法。 例如,要向其中添加元素,请使用add()
方法:
例如:
// 导入HashSet import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet<String> langs = new HashSet<String>(); langs.add("c"); langs.add("java"); langs.add("python"); langs.add("cjavapy"); langs.add("javascript"); System.out.println(langs); } }
注意:集合中的每个元素都必须是唯一的。
要判断HashSet
中是否存在某个元素,请使用contains()
方法:
例如:
langs.contains("cjavapy");
要删除元素,请使用remove()
方法:
例如:
langs.remove("cjavapy");
要删除所有元素,请使用clear()
方法:
例如:
langs.clear();
要找出有多少个元素,需要使用size方法:
例如:
langs.size();
通过for-each循环遍历HashSet
的元素:
例如:
for (String i : langs) { System.out.println(i); }
HashSet中的项目实际上是对象。在上面的示例中,我们创建了 项目 (对象)类型为字符串。Java中的String
是一个对象(不是原始类型)。要使用其他类型,例如int,必须指定等效的包装类:Integer
。对于其他基本类型,请使用:Boolean
表示布尔值,Character
表示char,Double
表示double,等等。
基本类型对应的包装类表如下:
基本类型 |
引用类型 |
boolean |
Boolean |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
例如:
使用存储Integer
对象的HashSet
:
import java.util.HashSet; public class Main { public static void main(String[] args) { // 创建HashSet对象 HashSet<Integer> numbers = new HashSet<Integer>(); // 添加 numbers.add(4); numbers.add(5); numbers.add(8); // 判断指定值是否包含 for(int i = 1; i <= 10; i++) { if(numbers.contains(i)) { System.out.println(i + " 存在numbers中"); } else { System.out.println(i + " 存在numbers中"); } } } }
1) HashSet实现了Set接口, 仅存储对象; HashMap实现了 Map接口, 存储的是键值对.
2) HashSet底层其实是用HashMap实现存储的, HashSet封装了一系列HashMap的方法. 依靠HashMap来存储元素值,(利用hashMap的key键进行存储), 而value值默认为Object对象. 所以HashSet也不允许出现重复值, 判断标准和HashMap判断标准相同, 两个元素的hashCode相等并且通过equals()方法返回true。
HashMap |
HashSet |
HashMap实现了Map接口 |
HashSet实现了Set接口 |
HashMap储存键值对 |
HashSet仅仅存储对象 |
使用put()方法将元素放入map中 |
使用add()方法将元素放入set中 |
HashMap中使用键对象来计算hashcode值 |
HashSet使用成员对象来计算hashcode值, 对于两个对象来说hashcode可能相同, 所以equals()方法用来判断对象的相等性, 如果两个对象不同的话,那么返回false |
HashMap比较快,因为是使用唯一的键来获取对象 |
HashSet较HashMap来说比较慢 |
原文地址:https://www.cjavapy.com/article/1624/