sort调用comparable
时间: 2023-08-23 17:05:43 浏览: 63
要写一个comparable接口和comparator的例子,要求用arrays.sort进行对象排序。
comparable接口是用于实现对象自身可以进行排序的接口,需要实现compareTo方法,而comparator则是通过外部比较器进行排序的接口,需要实现compare方法。使用arrays.sort可以方便地进行对象排序,可接受comparable和comparator作为参数。
相关问题
使用comparable进行降序排练,调用方法
在Java中,如果你想要使用Comparable接口对一个集合或数组进行降序排列,你可以让自定义的对象实现Comparable接口,并覆盖compareTo()方法。这个compareTo()方法会定义两个对象之间的自然顺序,如果返回值大于0,那么第一个对象应该位于第二个对象之后;如果返回值小于0,则相反。
以下是基本步骤:
1. 首先,创建一个实现了Comparable接口的类。比如,假设你有一个Person类,代表一个人,你可能会这样做:
```java
public class Person implements Comparable<Person> {
private String name;
// 省略其他属性...
@Override
public int compareTo(Person other) {
return this.name.compareTo(other.name); // 按照名字的字典顺序进行比较
}
}
```
2. 接下来,在排序集合时,可以使用Collections.sort()方法,传入你的列表并指定Comparator为降序排列:
```java
List<Person> people = ...; // 填充数据
Collections.sort(people, Collections.reverseOrder()); // 降序排列
```
或者直接传递自定义的Comparator:
```java
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return -p1.compareTo(p2); // 使用负数得到降序
}
});
```
comparable中的方法是什么时候调用的
在Java中,Comparable接口定义了一个方法compareTo(Object obj),它被用来比较对象的顺序。当我们使用排序算法(如Collections.sort())对一个对象列表进行排序时,会自动调用该方法。该方法返回一个整数值,用于指示两个对象的顺序关系。如果返回一个负数,则表示当前对象应该排在参数对象之前;如果返回0,则表示两个对象相等;如果返回一个正数,则表示当前对象应该排在参数对象之后。
阅读全文