在学习HashSet之前我们很有必要了解一下哈希值
哈希值
哈希值: 根据对象的地址或者字符串或者数字算出来的int类型的数值
Object类中有一个方法可以获取对象的哈希值
方法名 | 说明 |
---|---|
public int hashCode() | 返回对象的哈希码值 |
对象的哈希值特点
- 为保证元素唯一性,需要重写hashcode()和equals()(自己创建的实体类需要注意)
- 同一个对象多次调用hashCode0方法返回的哈希值是相同的
- 默认情况下, 不同对象的哈希值是不同的。而重写hashCode0方法,可以实现让不同对象的哈希值相同
HashSet集合概述和特点
- 底层数据结构是哈希表
- 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
- 没有带索引的方法,所以不能使用普通for循环遍历
- 由于是Set集合, 所以是不包含重复元素的集合
重写hashcode()和equals()
没有重写hashcode()和equals():
重写hashcode()和equals()之后:
重写两个方法代码实例
测试类:
import java.util.*;
public class Dmeo {
public static void main(String[] args) {
Student student1 = new Student("小哲哲",18);
Student student2 = new Student("小哲",17);
Student student3 = new Student("小哲哲",18);
Set<Studen