java 比较两个对象是否相等

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笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,531评论 0 3
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 CHAPTER3 Method...
    SnailTyan阅读 746评论 1 4
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 786评论 0 2
  • 失眠的第九个晚上,丝毫感觉不到困,呼吸平稳,身心放松,我开始关注生活中一些细节上的事情,尝试有意识的节省花费。我想...
    苏楠雮阅读 135评论 0 2
  • 你是谁不重要,重要的是你爱我,我爱你。沐子看着云天的眼睛认真的说。我相信缘分,无论是现在还是将来。我是否有将来我都...
    水来木生阅读 78评论 0 1