若要对某个特定类的特定关键字进行比较,可使用泛型来进行比较
若要对Student类的score字段进行比较,需要对Student implements Compareable接口
public class Student implements Comparable<Student> {
}
再override compareTo()方法,在该方法中进行编写比较代码即可
@Override
public int compareTo(Student student) {
if(this.score>student.score){
return -1;
}else if(this.score<student.score){
return 1;
}else{
return 0;
}
}
读者或许会感到奇怪—在此为什么使用关键字 extends 而不是 implements ? 毕竟,
Comparable 是一个接口。下面的记法
<T extends BoundingType〉
表示 T 应该是绑定类型的子类型 (subtype)。 T 和绑定类型可以是类, 也可以是接口。选
择关键字 extends 的原因是更接近子类的概念, 并且 Java 的设计者也不打算在语言中再添加
一个新的关键字(如 sub)。
一个类型变量或通配符可以有多个限定, 例如:
T extends Comparable & Serializable
限定类型用“ &” 分隔,而逗号用来分隔类型变量
使用泛型Implements Compareable接口:
Main类:
package com.changsan.fanxing;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Student[] ss= {new Student("changsan",80),new Student("changsan1",100)};
Arrays.sort(ss);
System.out.println(Arrays.toString(ss));
}
}
Student类:
package com.changsan.fanxing;
public class Student implements Comparable<Student> {
private String name;
private int score;
public Student(String name,int score) {
this.name = name;
this.score=score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
@Override
public int compareTo(Student student) {
if(this.score>student.score){
return -1;
}else if(this.score<student.score){
return 1;
}else{
return 0;
}
}
}
本文详细介绍了如何在Java中使用泛型和Comparable接口来实现类之间的比较功能,特别是针对Student类的分数字段进行比较的方法。
&spm=1001.2101.3001.5002&articleId=104408129&d=1&t=3&u=050bedb8ba4f42e0acfce699d9238676)
2319

被折叠的 条评论
为什么被折叠?



