美文网首页
java 比较两个对象是否相等

java 比较两个对象是否相等

作者: 请叫我的全名cv工程师 | 来源:发表于2020-03-08 16:53 被阅读0次

    java 中比较两个bean对象是否相同,可以有以下几种方法

    • 重新实现hashcode()方法和equals()方法
      两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。
      在equals ()方法中比较指定的字段
    • 使用 org.apache.commons的工具类重写重新实现hashcode()方法和equals()方法
      xxx部分是将指定的字段不用比较
     @Override
        public boolean equals(Object obj) {
            return EqualsBuilder.reflectionEquals(this, obj,"xxxx");
        }
    
        @Override
        public int hashCode() {
            return HashCodeBuilder.reflectionHashCode(this,,"xxxx");
        }
    
    • 实现Comparable<T>接口中的compareTo()方法
      返回值为 1,0.-1:
     @Override
        public int compareTo(Book o) {
              //先按 id 再按价格 最后按书名排序 升序
            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;
        }
    
    • 实现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() );
    

    相关文章

      网友评论

          本文标题:java 比较两个对象是否相等

          本文链接:https://www.haomeiwen.com/subject/dpycxhtx.html