日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何保证添加自定义对象元素的唯一性

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何保证添加自定义对象元素的唯一性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以圖書管理系統為例

1、首先自定義一個圖書類Book,自定義變量id,name,auther,price并重寫getset(),toString()方法,此處具體代碼省略。

2、再自定義一個管理圖書類Manage,在管理類中先定義一個ArrayList集合用來儲存圖書,再定義add()添加圖書方法,具體如下:

private ArrayList<Book> books;public Manage(){books = new ArrayList<>();}//添加圖書方法public void add(Book book){for(Book b:books)if(b.equals(book)){return;}books.add(book);}//輸出方法public void showAll(){for (int i = 0; i <books.size() ; i++) {System.out.println(books.get(i));}

添加方法完成后,雖然使用了equals()方法,但并不能保證添加元素的唯一性,因為如果沒有覆蓋重寫equals方法,那么Object類中默認進行==運算符的對象地址比較,比較的是地址值,即只要不是同一個對象,結果必然為false。 所以,我們需要重寫Book類中的equals()和hashcode()方法,用來比較對象中的內容,具體如下:

@Overridepublic 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 &&Double.compare(book.price, price) == 0 &&Objects.equals(name, book.name) &&Objects.equals(author, book.author);}@Overridepublic int hashCode() {return Objects.hash(id, price, name, author);}

重寫完成后,即可保證添加自定義對象元素的唯一性,測試如下:

public class ManageTest {public static void main(String[] args) {Manage m = new Manage();m.add(new Book(1001,"紅樓夢","張三",200));m.add(new Book(2002,"西游記","李四",140.50));m.add(new Book(3003,"三國演義","王五",130));m.add(new Book(4004,"水滸傳","趙六",83));m.add(new Book(5005,"三個和尚","李四",50));m.add(new Book(5005,"三個和尚","李四",50));m.showAll();} }

結果如下:

Book{id=1001?? ?name=紅樓夢?? ?author=張三?? ?price=200.0?? ?}
Book{id=2002?? ?name=西游記?? ?author=李四?? ?price=140.5?? ?}
Book{id=3003?? ?name=三國演義?? ?author=王五?? ?price=130.0?? ?}
Book{id=4004?? ?name=水滸傳?? ?author=趙六?? ?price=83.0?? ?}
Book{id=5005?? ?name=三個和尚?? ?author=李四?? ?price=50.0?? ?}

由此可知,此方法可行。
?

總結

以上是生活随笔為你收集整理的如何保证添加自定义对象元素的唯一性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。