多平台统一管理软件接口,如何实现多平台统一管理软件接口
506
2022-11-22
java使用compareTo实现一个类的对象之间比较大小操作
首先定义一个对象,注意这个对象必须实现Comparable接口,并重写这个接口的compareTo方法
package cn.demo;
public class Student implements Comparable{
private int number=0; //学号
private String name=""; //学生姓名
private String gender=""; //性别
public int getNumber(){
return number;
}
public void setNumber(int number){
this.number=number;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getGender(){
return gender;
}
public void setGender(String gender){
this.gender=gender;
}
public int compareTo(Object obj){
Student student=(Student)obj;
if(this.number==student.number){
return 0; //如果学号相同,那么两者就是相等的
}else if(this.number>student.getNumber()){
return 1; //如果这个学生的学号大于传入学生的学号
}else{
return -1; //如果这个学生的学号小于传入学生的学号
}
}
}
在上面的重写方法中标红的地方,如果是小于号,则是按照降序排列,但是在我贴上去的代码,则是按升序排列
接下来就是测试类了:
package cn.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
Student student1=new Student();
student1.setNumber(5);
Student student2=new Student();
student2.setNumber(2);
Student student3=new Student();
student3.setNumber(1);
Student student4=new Student();
student4.setNumber(4);
ArrayList
list.add(student1);
list.add(student2);
list.add(student3);
list.add(student4);
System.out.println("-------排序前-------");
Iterator
while(iterator.hasNext()){
Student stu=iterator.next();
System.out.println(stu.getNumber());
}
//使用Collections的sort方法对list进行排序
System.out.println("-------排序后-------");
Collections.sort(list);
iterator=list.iterator();
while(iterator.hasNext()){
Student stu=iterator.next();
System.out.println(stu.getNumber());
}
}
}
如上所示,可以直接使用collections的sort方法进行排序
-------排序前-------
5
2
1
4
-------排序后-------
5
4
2
1
补充知识:【JAVA】用Comparable接口学生的成绩做降序排序!请正确指定泛型;用Comparator实现按照姓名排序,请正确指定泛型!
创建四个学生信息,分别包含姓名(String) , 年龄(int) ,分数(double)
(1)用Comparable接口对下列四位同学的成绩做降序排序, 如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序,请正确指定泛型;
(2)用Comparator实现按照姓名排序,请正确指定泛型。
//定义学生类,并实现Comparable接口<定义Student类型>
public class Student implements Comparable
private String name;
private int age;
private double grade;
public Student() {
}
public Student(String name, int age, double grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Student [姓名 :" + name +
" 年龄 BXlZTMXTnA:" + age +
" 分数" + grade + "]";
}
/**
* 用Comparable接口对下列四位同学的成绩做降序排序,
* 如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。请正确指定泛型
* @param o
* @return
*/
@Override
public int compareTo(Student o) {
if(Double.compare(this.getGrade() , o.getGrade()) != 0){
if(Double.compare(this.getGrade() , o.getGrade()) > 0){
return 1;
}else {
return -1;
}
}
return this.getAge() - o.getAge();
}
}
*定义Student类,声明基本的属性,方法及完成对Comparable接口的实现,实现“对成绩实现降序,如果成绩一样,在成绩排序的基础上按照年龄由大到小的排序”的结果。
public class Task {
public static void main(String[] args) {
//定义四个学生对象
Student[] s1 = new Student[4];
s1[0] = new Student("liusan" , 20 , 90.0);
s1[1] = new Student("lisi" , 22 , 90.0);
s1[2] = new Student("wangwu" , 20 , 99.0);
s1[3] = new Student("sunliu" , 22 , 100.0);
Arrays.sort(s1);
System.out.println(Arrays.toString(s1));
System.out.println("==================");
//用Comparator实现按照姓名排序,请正确指定泛型
Arrays.sort(s1, new Comparator
@Override
public int compare(Student o1, Student o2) {
return o1.getName().compareTo(o2.getName());
}
});
System.out.println(Arrays.toString(s1));
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~