java 中比較兩個(gè)bean對象是否相同,可以有以下幾種方法
- 重新實(shí)現(xiàn)hashcode()方法和equals()方法
兩個(gè)相等對象的equals方法一定為true, 但兩個(gè)hashcode相等的對象不一定是相等的對象。
在equals ()方法中比較指定的字段 - 使用 org.apache.commons的工具類重寫重新實(shí)現(xiàn)hashcode()方法和equals()方法
xxx部分是將指定的字段不用比較
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj,"xxxx");
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this,,"xxxx");
}
- 實(shí)現(xiàn)Comparable<T>接口中的compareTo()方法
返回值為 1压语,0.-1:
@Override
public int compareTo(Book o) {
//先按 id 再按價(jià)格 最后按書名排序 升序
int result = this.bookId - o.bookId;
if(result == 0){
result =this.bookPrice - o.bookPrice;
}
if(result == 0){
result = this.bookName.compareTo(o.bookName);
}
return result;
}
- 實(shí)現(xiàn)Comparator<T>接口
java 1.8之前
Collections.sort(books,new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
return o1.getBookPrice() - o2.getBookPrice();
}
});
java 1.8之后
Collections.sort(books,(Book a, Book b) -> { return a.getBookPrice()-b.getBookPrice(); });
或者可以簡單的寫為
Collections.sort(books,(Book a, Book b) -> a.getBookPrice()-b.getBookPrice());
甚至啡直,我們可以不使用Collections.sort:
books.sort((Book a, Book b) -> a.getBookPrice()-b.getBookPrice() );