现有若干图书信息(包含名称title、作者author、定价price)需要存储到set集合中,保证集合中无重复元素,并遍历查看。可以认为所有信息都相同的图书为重复数据。用java写出来再解释一下
时间: 2024-02-25 12:55:57 浏览: 25
好的,这是您的第一个问题。以下是Java的代码实现:
```java
import java.util.HashSet;
import java.util.Set;
public class Book {
private String title;
private String author;
private double price;
public Book(String title, String author, double price) {
this.title = title;
this.author = author;
this.price = price;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public double getPrice() {
return price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Book)) return false;
Book book = (Book) o;
return Double.compare(book.price, price) == 0 &&
title.equals(book.title) &&
author.equals(book.author);
}
@Override
public int hashCode() {
int result = title.hashCode();
result = 31 * result + author.hashCode();
result = 31 * result + (int) (Double.doubleToLongBits(price) ^ (Double.doubleToLongBits(price) >>> 32));
return result;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
public static void main(String[] args) {
Set<Book> bookSet = new HashSet<>();
bookSet.add(new Book("Java编程思想", "Bruce Eckel", 99.0));
bookSet.add(new Book("Thinking in Java", "Bruce Eckel", 89.0));
bookSet.add(new Book("Java编程思想", "Bruce Eckel", 99.0));
bookSet.add(new Book("Effective Java", "Joshua Bloch", 69.0));
bookSet.add(new Book("Head First Java", "Kathy Sierra & Bert Bates", 59.0));
for (Book book : bookSet) {
System.out.println(book);
}
}
}
```
在这个示例中,我们创建了一个名为`Book`的类,该类代表图书。我们使用`HashSet`来存储`Book`对象,因为它保证了集合中没有重复项。我们还重写了`equals()`和`hashCode()`方法,以便正确比较`Book`对象。最后,我们遍历`bookSet`并打印每个`Book`对象。
解释一下,我们通过创建一个名为`Book`的类来表示图书并将其存储在一个名为`bookSet`的`HashSet`中。由于我们重写了`equals()`和`hashCode()`方法以比较`Book`对象,因此`bookSet`保证不会包含重复项。我们使用`for-each`循环遍历`bookSet`并打印每个`Book`对象的信息,以便查看它们被正确地添加到集合中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)