java对象比较的实现模式,如何实现java对象比较

2025-04-28 17:31:31

1、如果说现在有两个数字要判断是否相等,可以使用“==”完成,如果是字符串判断是否相等使用"equals()",但是如果说现在有一个自定义的类,要想判断它的怎剑词阶两个对象是否相等,那么必须要实现类对象之中所有属性内容的比较。对象=数据集合,那么进行比较一定要一次比较所有的属性。package com.gwolf;class Book { private String title; private double price; public Book(String title, double price) { super(); this.title = title; this.price = price; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; }}public class TestDemo { public static void main(String[] args) { Book book = new Book("java开发", 79); Book book2 = new Book("java开发", 79); if(book.getTitle().equals(book2.getTitle())&&book.getPrice()==book2.getPrice()) { System.out.println("同一个对象"); }else { System.out.println("不是同一个对象"); } }}

java对象比较的实现模式,如何实现java对象比较

2、 此时一个最基础的对象比较的功能实现了,以上按照要求进行了对象中属性内容的比较。但是以上的程序里面会存在有问题:主方法(main())就是一个客户端,客户端的程序逻辑越简单越好,最好隐胄皤茑旷藏所有的细节逻辑。 如果要想进行信息比较,那么所有的具体比较细节必须由每个对象自己完成。对象所在的类一定要提供有对象比较的方法。 那么现在的问题出现了,该如何去定义这个方法呢?假如说这个方法名称暂时定义为compare()。package com.gwolf;class Book { private String title; private double price; public Book(String title, double price) { this.title = title; this.price = price; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public boolean compare(Book book) { if(book.getTitle().equals(this.getTitle())&& book.getPrice()==this.getPrice()) { return true; }else { return false; } } }public class TestDemo { public static void main(String[] args) { Book book = new Book("java开发", 79); Book book2 = new Book("java开发", 79); if(book.compare(book2)) { System.out.println("同一个对象"); }else { System.out.println("不是同一个对象"); } }}

java对象比较的实现模式,如何实现java对象比较

3、现在我们查看程序的执行结果:

java对象比较的实现模式,如何实现java对象比较

4、对象比较的操作代码形式都是固定的,都会按照固定的步骤进行同一对象的验证比较。Comparable接口的主要特征是在类定义的时候就默认实现好的接口,那么如果说现在有一个类已经开发完善了。但是由于初期的设计并没有安排此类对象的比较。而后又突然需要实现对象数组的排序,那么这个时候再不修改Book类定义情况下是不可能使用Comparable接口的,为此java里面为了解决这样的问题,又出现了另外一个比较器:java.util.Comparator。

java对象比较的实现模式,如何实现java对象比较

5、我们需要单独准备一个类来实现Comparator接口,这个类将作为指定类的排序类。class BookComparator implements Comparator<Book> { public int compare(Book o1, Book o2) { if(o1.getPrice() > o2.getPrice()) { return 1; }else if(o1.getPrice() < o2.getPrice()) { return -1; }else { return 0; } }}

java对象比较的实现模式,如何实现java对象比较

6、之前使用Comparable接口的时候利用的是Arrays中的sort()方法,可是现在更换了一个接口之后,那么现在可以使用另外一个被重载的sort()方法: public static <T> void sort(T[] a, Comparator<? super T> c);public class TestDemo { public static void main(String[] args) { Book book = new Book("java开发", 79); Book book2 = new Book("java开发", 79); Book books[] = new Book[]{book,book2}; Arrays.sort(books,new BookComparator()); System.out.println(Arrays.toString(books)); }}

java对象比较的实现模式,如何实现java对象比较
java对象比较的实现模式,如何实现java对象比较
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢