Java中的比较器有哪些

  介绍

这篇文章将为大家详细讲解有关Java中的比较器有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。

第一个方面:对象的地址是否一样,也就是是否引用自同一个对象。这种方式可以直接使用“==崩赐瓿伞?/p>

第二个方面:以对象的某一个属性的角度去比较。

<强>一、覆写对象类的equals()方法;

<强>二,继承可比接口,并实现compareTo()方法;

<强>三、定义一个单独的对象比较器,继承自比较器接口,实现比较()方法。

由于使用的排序方式的不同,具体选择哪种方法来实现对象的比较也会有所不同。

覆写=()方法,一般用于自己实现对象数组排序的情况,而对于要使用Java内置的排序算法时,使用后面两种方式都是可行的。

先来看第二种方式,这种方式就是让自己编写的类继承可比接口,并实现compareTo()方法,这种情况下,在使用java.util.Arrays.sort ()

方法时,不用指定具体的比较器,排序()方法会使用对象自己的比较函数来完成对象的排序。

进口java.util.Arrays;
  
  类BookCook实现Comparable 

一般我们使用以上两种方法就能够满足实际的开发问题。但是当出现以下情况时,就需要用到比较器接口:

要在已经开发好的代码的基础上完善对象的比较功能时,又不想更改之前的代码,这种情况下,从JDK1.8之后出现了比较器接口,是对这种情况的一个弥补。

这种情况下,我们需要单独定义一个对象比较器,继承比较器接口,并实现比较()方法。示例代码如下:

类学生
  私人字符串名称;
  私人双分数;
  公开学生(字符串名称、双分数){
  this.name=名称;
  这一点。分数=分数;
  }
  公共双getScore () {
  返回this.score;
  }
  @Override
  公共字符串toString () {
  返回“姓名:“+ this.name +“,分数:“+ this.score;
  }
  
  }
  类StudentComparator实现Comparator{
  @Override
  公共int比较(学生o1、o2) {
  如果(o1.getScore()在o2.getScore ()) {
  返回1;
  }else if (o1.getScore () & lt;o2.getScore ()) {
  返回1;
  其他}{
  返回0;
  }
  }
  }
  公开课TestComparator {
  
  公共静态void main (String [] args) {
  
  学生sts=新学生[][]{
  新学生(“小戴“,60),
  新学生(“小王“,90),
  新学生(“老王“,80),
  新学生(“小萱“,95)
  };
  
  java.util.Arrays。排序(sts,新的StudentComparator ());
  System.out.println (java.util.Arrays.toString (sts));
  }
  }

关于Java中的比较器有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

Java中的比较器有哪些