7-1 jmu-Java-04面向对象进阶-01-接口-Comparable (5分)
发布日期:2021-05-08 02:32:59 浏览次数:21 分类:精选文章

本文共 2594 字,大约阅读时间需要 8 分钟。

PersonSortable类是一个实现Comparable接口的Java类,用于对对象进行排序。该类主要用于按姓名和年龄对人对象进行升序排序。具体来说,如果两个对象的姓名相同,则按年龄升序排列;如果年龄也相同,则按姓名升序排列。

类结构

PersonSortable类包含两个私有属性:name和age。同时,类提供了一个有参构造函数用于初始化对象。类还定义了toString方法用于返回对象的字符串表示。由于该类实现了Comparable接口,因此可以直接通过Arrays.sort方法对数组进行排序。

类代码

import java.util.Arrays;
import java.util.Comparator;
public class PersonSortable implements Comparable
{
private String name;
private int age;
public PersonSortable(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public int compareTo(PersonSortable peo) {
// 先按name升序排列,如果name相同则按age升序排列
if (this.name.compareTo(peo.name) > 0) {
return 1;
} else if (this.name.compareTo(peo.name) < 0) {
return -1;
} else {
// name相同,按age升序排列
if (this.age > peo.age) {
return 1;
} else if (this.age < peo.age) {
return -1;
} else {
return 0;
}
}
}
@Override
public String toString() {
return name + "-" + age;
}
}

使用说明

在main方法中,可以按照以下步骤使用PersonSortable类:

  • 读取输入的整数n,表示要创建的对象数量。
  • 创建一个PersonSortable数组,初始化为大小为n。
  • 读取n行输入,每行包含一个人的姓名和年龄,并将其转化为PersonSortable对象,添加到数组中。
  • 使用Arrays.sort方法对数组进行排序。
  • 遍历排序后的数组,输出每个对象的字符串表示。
  • 最后输出PersonSortable类所实现的所有接口。
  • 示例代码

    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    Scanner cin = new Scanner(System.in);
    int n = cin.nextInt();
    PersonSortable[] stu = new PersonSortable[n];
    for (int i = 0; i < n; i++) {
    String name = cin.next();
    int age = cin.nextInt();
    stu[i] = new PersonSortable(name, age);
    }
    Arrays.sort(stu);
    for (PersonSortable p : stu) {
    System.out.println(p.toString());
    }
    System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));
    }
    }

    输出示例

    输入样例:

    5
    zhang 15
    zhang 12
    wang 14
    Wang 17
    li 17

    输出样例:

    Wang-17
    li-17
    wang-14
    zhang-12
    zhang-15
    comparable

    注意事项

    • PersonSortable类中的compareTo方法确保了先按name升序排列,name相同则按age升序排列。
    • 在main方法中,确保正确读取输入数据,并将其转化为PersonSortable对象。
    • 使用Arrays.sort方法对数组进行排序,直接使用PersonSortable实现了Comparable接口,无需额外处理。
    • 最后通过Arrays.toString方法获取PersonSortable类实现的所有接口,并将结果输出。
    上一篇:unity拖动改变锚点的方法
    下一篇:Unity2d代码翻转人物左右方向的两种方法及其适用情况

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年04月02日 19时59分49秒