当前位置: 代码迷 >> 综合 >> 6-1 jmu-Java-04面向对象进阶-01-接口-Comparable (5分)
  详细解决方案

6-1 jmu-Java-04面向对象进阶-01-接口-Comparable (5分)

热度:42   发布时间:2023-12-19 07:34:48.0

编写实现Comparable接口的PersonSortable类,使其按name以及age排序

#1.编写PersonSortable类 属性:private name(String)、private age(int)
有参构造函数:参数为name,age
toString函数:返回格式为:name-age
实现Comparable接口:实现先对name升序排序,如果name相同则对age进行升序排序

#2.main方法中

首先输入n
输入n行name age,并创建n个对象放入数组
对数组进行排序后输出。
最后一行使用System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));输出PersonSortable所实现的所有接口

输入样例:

5
zhang 15
zhang 12
wang 14
Wang 17
li 17

输出样例:

Wang-17
li-17
wang-14
zhang-12
zhang-15
//这行是标识信息

参考代码:

import java.util.*;class PersonSortable implements Comparable{
    private String name;private int age;public PersonSortable() {
    this.name = name;this.age = age;}public PersonSortable(String name, int age) {
    this.name = name;this.age = age;}@Overridepublic String toString() {
    return name+"-"+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;}@Overridepublic int compareTo(Object o) {
    PersonSortable per=(PersonSortable)o;int x = this.name.compareTo(per.name);if(x!=0){
    return x;}else{
    if (this.age>per.age)return 1;else if(this.age<per.age)return -1;elsereturn 0;}}
}
public class Main {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);int count=Integer.valueOf(sc.nextLine());ArrayList<PersonSortable> list=new ArrayList();for (int i=0;i<count;i++){
    String string[]=sc.nextLine().split(" ");list.add(new PersonSortable(string[0],Integer.valueOf(string[1])));}Collections.sort(list);for (PersonSortable p:list){
    System.out.println(p);}System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));}
}

或者

import java.util.Arrays;
import java.util.Scanner;
import java.util.Comparator;public class Main {
    public static void main(String[] args) {
    Scanner scan= new Scanner(System.in);int n = scan.nextInt();//输入几行PersonSortable[] stu = new PersonSortable[n];//定义数组有n个元素for(int i = 0;i<n;i++){
    //循环n次取值String s = scan.next();//取nameint j = scan.nextInt();//取agestu[i] = new PersonSortable(s,j);//将有参函数赋给数组}Arrays.sort(stu);//对数组排序for(int i =0;i<n;i++){
    System.out.println(stu[i].toString());}//输出PersonSortable所实现的所有接口System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));}}class PersonSortable implements Comparable<PersonSortable>{
    String name;private int age;public PersonSortable() {
    this.name = name;this.age = 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;}public int compareTo(PersonSortable peo){
    if(this.name.compareTo(peo.name)>0)return 1;//若为升序,则返回1(真)else if(this.name.compareTo(peo.name)<0)return -1;//反之返回-1else{
    if(this.age<peo.age)return -1;//若年龄比比较者小,返回-1(假)else return 1;//反之返回1}}@Overridepublic String toString() {
    return name+"-"+age;}	
}
  相关解决方案