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

2025-11-10 07:41:45

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。
猜你喜欢