1.创建一个Book类,声明三个私有变量: id;name;price;
2.按下AIt加ins键构造有参无参方法;getter和setter方法;toStirng() 方法
3.重写 equals();hashCode()两个方法
.按下AIt加ins选择 equals()and hashCode()
上述步骤代码:
/*
* Copyright (c) 2020, 2023.
*
*/
import java.util.Objects;
/**
* <p>Project: Exception - Book</p>
* <p>Powered by Cyy On 2023-07-19 16:24:09</p>
* <p>描述:<p>
*
* @author Cyy [210585265@qq.com]
* @version 1.0
* @since 17
*/
public class Book {
private int id;
private String name;
private int price;
public Book(int id, String name, int price) {
this.id = id;
this.name = name;
this.price = price;
}
public Book() {
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return id == book.id && price == book.price && Objects.equals(name, book.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, price);
}
}
4.创建一个HashSet类
HashSet<Object> set = new HashSet<>();//创建了一个HashSet的对象
5.然后在里面添加多个重复元素
set.add(new Book());
set.add(new Book());
set.add(new Book());
set.add(new Book());
set.add(new Book());
6.验证输出
输出程序元素的个数
System.out.println(set.size());
输出这几个元素的hashCode(内置地址)
System.out.println(set.hashCode());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
上述步骤代码:
/*
* Copyright (c) 2020, 2023.
*
*/
import java.util.HashSet;
/**
* <p>Project: Exception - Set1</p>
* <p>Powered by Cyy On 2023-07-19 16:23:52</p>
* <p>描述:<p>
*
* @author Cyy [210585265@qq.com]
* @version 1.0
* @since 17
*/
public class Set1 {
public static void main(String[] args) {
HashSet<Object> set = new HashSet<>();
set.add(new Book());
set.add(new Book());
set.add(new Book());
set.add(new Book());
set.add(new Book());
System.out.println(set);
System.out.println(set.size());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
System.out.println(set.hashCode());
}
}
输出结果:
7.结论
从结果图我们阔以看出:
元数个数是1
hashCode(内置地址) 全部相同
我们阔以知道在 HashSet类 中当hashCode(内置地址) 全部相同,
那么只会存放第一个元素,后面相同的元素存放失败,所以元数个数为1