compare方法的重写
时间: 2023-09-25 08:13:12 浏览: 62
在Java中,如果我们需要对自定义对象进行排序,就需要重写compare方法。Comparator接口提供了一个compare方法,用于比较两个对象的大小。一般来说,我们需要在重写compare方法时遵循以下规则:
(1)如果第一个对象小于第二个对象,返回一个负整数。
(2)如果第一个对象等于第二个对象,返回0。
(3)如果第一个对象大于第二个对象,返回一个正整数。
下面是一个例子,演示如何重写compare方法:
```
import java.util.Comparator;
public class MyClass implements Comparable<MyClass> {
private int myField;
public MyClass(int myField) {
this.myField = myField;
}
public int getMyField() {
return myField;
}
public void setMyField(int myField) {
this.myField = myField;
}
@Override
public int compareTo(MyClass other) {
return Integer.compare(this.myField, other.myField);
}
public static class MyComparator implements Comparator<MyClass> {
@Override
public int compare(MyClass obj1, MyClass obj2) {
return Integer.compare(obj1.getMyField(), obj2.getMyField());
}
}
}
```
在这个例子中,MyClass实现了Comparable接口,并重写了compareTo方法。另外,MyClass还包含一个嵌套类MyComparator,该类实现了Comparator接口,并重写了compare方法,用于对MyClass对象进行排序。
在重写compare方法时,我们可以使用Java API提供的静态方法Integer.compare(val1, val2)来比较两个整数的大小。如果val1小于val2,返回一个负整数;如果val1等于val2,返回0;如果val1大于val2,返回一个正整数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)