j ava枚举类与compareto
时间: 2023-06-22 07:24:42 浏览: 180
枚举类是Java中一种特殊的数据类型,它代表了一组预定义的常量。
而compareTo()是Java中Comparable接口的一个方法,用于比较两个对象的大小关系,返回值为正数则代表前者大于后者,为负数则代表前者小于后者,为零则代表两者相等。
在枚举类中,可以实现Comparable接口并重写compareTo()方法,使得枚举常量之间可以比较大小。例如:
```
public enum Size implements Comparable<Size> {
SMALL, MEDIUM, LARGE;
@Override
public int compareTo(Size otherSize) {
return this.ordinal() - otherSize.ordinal();
}
}
```
上述代码中,定义了一个枚举类Size,并实现了Comparable接口并重写了compareTo()方法。在compareTo()方法中,使用了ordinal()方法获取当前枚举常量的序号,并与另一个枚举常量的序号进行比较,从而实现了枚举常量之间的大小比较。
这样,在使用枚举类时就可以直接使用compareTo()方法进行大小比较,例如:
```
Size s1 = Size.SMALL;
Size s2 = Size.MEDIUM;
if (s1.compareTo(s2) < 0) {
System.out.println("s1 is smaller than s2");
}
```
相关问题
j ava泛型list排序
Java 泛型 List 排序可以使用 Collections.sort() 方法,该方法接受一个 List 和一个 Comparator 参数。
以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(5);
list.add(2);
// 使用 Collections.sort() 方法进行排序
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
// 输出排序后的结果
for (Integer i : list) {
System.out.println(i);
}
}
}
```
在上面的示例中,我们创建了一个包含整数的 List,并使用 Collections.sort() 方法对其进行排序。在 sort() 方法的第二个参数中,我们传递了一个匿名的 Comparator 对象,用于指定排序规则。在这个示例中,我们使用了 Integer 类的 compareTo() 方法进行比较,从而实现升序排序。
compareto方法
Java中的`compareTo()`方法是用于比较两个对象的大小。它是Comparable接口中的一个方法,这个接口可以被实现的类使用,以便它们可以进行比较。
`compareTo()`方法的返回值是一个整数,它可以有三种返回值:
- 如果当前对象小于比较对象,则返回负整数。
- 如果当前对象等于比较对象,则返回零。
- 如果当前对象大于比较对象,则返回正整数。
通常情况下,`compareTo()`方法会依据对象的某些属性来比较它们的大小。例如,如果一个类实现了Comparable接口,并且该类的对象具有一个名为“age”的属性,那么`compareTo()`方法可能会使用age属性来比较两个对象的大小。
以下是一个示例代码,展示了如何实现`compareTo()`方法:
```
public class Person implements Comparable<Person> {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
@Override
public int compareTo(Person otherPerson) {
// 按照年龄排序
return this.age - otherPerson.getAge();
}
}
```
在上面的代码中,我们实现了一个Person类,并且让它实现了Comparable接口。我们重写了`compareTo()`方法,使用年龄属性来比较两个Person对象的大小。
阅读全文