首页 > 软件开发 > JAVA >

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

来源:互联网 2023-03-16 19:17:56 169

java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

工具/原料

  • java
  • eclipse

方法/步骤

  • 1

    如果说现在有两个数字要判断是否相等,可以使用“==”完成,如果是字符串PiK办公区 - 实用经验教程分享!

    判断是否相等使用"equals()",但是如果说现在有一个自定义的类,要想判断它PiK办公区 - 实用经验教程分享!

    的两个对象是否相等,那么必须要实现类对象之中所有属性内容的比较。PiK办公区 - 实用经验教程分享!

    对象=数据集合,那么进行比较一定要一次比较所有的属性。PiK办公区 - 实用经验教程分享!

    package com.gwolf;PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    class Book {PiK办公区 - 实用经验教程分享!

    private String title;PiK办公区 - 实用经验教程分享!

    private double price;PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    public Book(String title, double price) {PiK办公区 - 实用经验教程分享!

    super();PiK办公区 - 实用经验教程分享!

    this.title = title;PiK办公区 - 实用经验教程分享!

    this.price = price;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public String getTitle() {PiK办公区 - 实用经验教程分享!

    return title;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public void setTitle(String title) {PiK办公区 - 实用经验教程分享!

    this.title = title;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public double getPrice() {PiK办公区 - 实用经验教程分享!

    return price;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public void setPrice(double price) {PiK办公区 - 实用经验教程分享!

    this.price = price;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    public class TestDemo {PiK办公区 - 实用经验教程分享!

    public static void main(String[] args) {PiK办公区 - 实用经验教程分享!

    Book book = new Book("java开发", 79);PiK办公区 - 实用经验教程分享!

    Book book2 = new Book("java开发", 79);PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    if(book.getTitle().equals(book2.getTitle())&&book.getPrice()==book2.getPrice()) {PiK办公区 - 实用经验教程分享!

    System.out.println("同一个对象");PiK办公区 - 实用经验教程分享!

    }else {PiK办公区 - 实用经验教程分享!

    System.out.println("不是同一个对象");PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

  • 2

    此时一个最基础的对象比较的功能实现了,以上按照要求进行了对象中属性内容的比较。但是以上的程序里面会存在有问题:主方法(main())就是一个客户端,客户端的程序逻辑越简单越好,最好隐藏所有的细节逻辑。PiK办公区 - 实用经验教程分享!

    如果要想进行信息比较,那么所有的具体比较细节必须由每个对象自己完成。对象所在的类一定要提供有对象比较的方法。PiK办公区 - 实用经验教程分享!

    那么现在的问题出现了,该如何去定义这个方法呢?假如说这个方法名称暂时定义为compare()。PiK办公区 - 实用经验教程分享!

    package com.gwolf;PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    class Book {PiK办公区 - 实用经验教程分享!

    private String title;PiK办公区 - 实用经验教程分享!

    private double price;PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    public Book(String title, double price) {PiK办公区 - 实用经验教程分享!

    this.title = title;PiK办公区 - 实用经验教程分享!

    this.price = price;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public String getTitle() {PiK办公区 - 实用经验教程分享!

    return title;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public void setTitle(String title) {PiK办公区 - 实用经验教程分享!

    this.title = title;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public double getPrice() {PiK办公区 - 实用经验教程分享!

    return price;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    public void setPrice(double price) {PiK办公区 - 实用经验教程分享!

    this.price = price;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    public boolean compare(Book book) {PiK办公区 - 实用经验教程分享!

    if(book.getTitle().equals(this.getTitle())&&PiK办公区 - 实用经验教程分享!

    book.getPrice()==this.getPrice()) {PiK办公区 - 实用经验教程分享!

    return true;PiK办公区 - 实用经验教程分享!

    }else {PiK办公区 - 实用经验教程分享!

    return false;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    public class TestDemo {PiK办公区 - 实用经验教程分享!

    public static void main(String[] args) {PiK办公区 - 实用经验教程分享!

    Book book = new Book("java开发", 79);PiK办公区 - 实用经验教程分享!

    Book book2 = new Book("java开发", 79);PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    if(book.compare(book2)) {PiK办公区 - 实用经验教程分享!

    System.out.println("同一个对象");PiK办公区 - 实用经验教程分享!

    }else {PiK办公区 - 实用经验教程分享!

    System.out.println("不是同一个对象");PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

  • 3

    现在我们查看程序的执行结果:PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

  • 3此文章未经授权抓取自百度经验
  • 4

    对象比较的操作代码形式都是固定的,都会按照固定的步骤进行同一对象的验证比较。PiK办公区 - 实用经验教程分享!

    Comparable接口的主要特征是在类定义的时候就默认实现好的接口,那么如果说现在有一个类已经开发完善了。PiK办公区 - 实用经验教程分享!

    但是由于初期的设计并没有安排此类对象的比较。而后又突然需要实现对象数组的排序,那么这个时候再不修改Book类定义情况下是不可能使用Comparable接口的,为此java里面为了解决这样的问题,又出现了另外一个比较器:java.util.Comparator。PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

  • 5

    我们需要单独准备一个类来实现Comparator接口,这个类将作为指定类的排序类。PiK办公区 - 实用经验教程分享!

    class BookComparator implements ComparatorBook> {PiK办公区 - 实用经验教程分享!

    public int compare(Book o1, Book o2) {PiK办公区 - 实用经验教程分享!

    if(o1.getPrice() > o2.getPrice()) {PiK办公区 - 实用经验教程分享!

    return 1;PiK办公区 - 实用经验教程分享!

    }else if(o1.getPrice() o2.getPrice()) {PiK办公区 - 实用经验教程分享!

    return -1;PiK办公区 - 实用经验教程分享!

    }else {PiK办公区 - 实用经验教程分享!

    return 0;PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

  • 6

    之前使用Comparable接口的时候利用的是Arrays中的sort()方法,可是现在更换了一个接口之后,那么现在可以使用另外一个被重载的sort()方法:PiK办公区 - 实用经验教程分享!

    public static T> void sort(T[] a, Comparator? super T> c);PiK办公区 - 实用经验教程分享!

    public class TestDemo {PiK办公区 - 实用经验教程分享!

    public static void main(String[] args) {PiK办公区 - 实用经验教程分享!

    Book book = new Book("java开发", 79);PiK办公区 - 实用经验教程分享!

    Book book2 = new Book("java开发", 79);PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    Book books[] = new Book[]{book,book2};PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    Arrays.sort(books,new BookComparator());PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    System.out.println(Arrays.toString(books));PiK办公区 - 实用经验教程分享!

    PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    }PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

    java对象比较的实现模式,如何实现java对象比较PiK办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!PiK办公区 - 实用经验教程分享!


    标签: JAVA

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码