Java中的HashSet详解和使用示例
什么是HashSet?
HashSet是Java的一个集合类,它实现了Set接口,用于存储不重复的元素。HashSet基于哈希表实现,查询的效率非常高,不过HashSet不保证元素的顺序。在使用HashSet时,需要注意元素必须重写hashCode()和equals()方法。
HashSet的常用方法
添加元素方法
向HashSet中添加元素使用add(E e)方法,可以添加任意类型的元素,返回值为boolean类型。如果 HashSet 中没有该元素,则返回true,否则返回false。
HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
判断元素是否存在方法
判断HashSet中是否存在该元素使用contains(Object o)方法,该方法返回boolean类型。如果HashSet中存在o元素,则返回true,否则返回false。
HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
System.out.println(set.contains("B")); // 输出 true
System.out.println(set.contains("D")); // 输出 false
删除元素方法
从HashSet中删除元素使用remove(Object o)方法,该方法返回boolean类型。如果HashSet中存在o元素,则删除该元素并返回true,否则返回false。
HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
set.remove("B");
System.out.println(set); // 输出 [A, C]
HashSet使用示例
示例一:存储学生信息
假设我们需要将若干学生的信息存储到HashSet中。
class Student {
public int id;
public String name;
public int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
HashSet<Student> set = new HashSet<Student>();
set.add(new Student(1, "张三", 18));
set.add(new Student(2, "李四", 19));
set.add(new Student(3, "王五", 20));
set.add(new Student(1, "张三", 18)); // 重复元素
System.out.println(set.size()); // 输出 3
System.out.println(set.contains(new Student(1, "张三", 18))); // 输出 true
在这个示例中,我们定义了一个Student类,用于存储学生的基本信息。在创建HashSet之前,我们需要在Student对象中重写hashCode()和equals()方法,实现比较学生的id是否相同。
示例二:去重
假设我们需要将最近一周中每天登录我们网站的用户的用户名保存到一个HashSet中,以便后续统计活跃用户数。但有些用户可能一周内登录了多次,我们只需记录每个用户的用户名一次。
HashSet<String> userSet = new HashSet<String>();
userSet.add("Alice");
userSet.add("Bob");
userSet.add("Charlie");
userSet.add("Dan");
userSet.add("Charlie"); // 重复元素
System.out.println(userSet.size()); // 输出 4
在这个示例中,我们只需要往HashSet中添加每个用户的用户名,HashSet会帮我们自动去重,最后输出HashSet的size即为活跃用户数量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的HashSet详解和使用示例_动力节点Java学院整理 - Python技术站