1. 程式人生 > 其它 >6-2 jmu-Java-04面向物件進階--02-介面-Comparator (5分)

6-2 jmu-Java-04面向物件進階--02-介面-Comparator (5分)

技術標籤:PTAjava

Arrays.sort可以對所有實現Comparable的物件進行排序。但如果有多種排序需求,如有時候需對name進行降序排序,有時候只需要對年齡進行排序。使用Comparable無法滿足這樣的需求。可以編寫不同的Comparator來滿足多樣的排序需求。

#1.編寫PersonSortable2類 屬性:private name(String)、private age(int)
有參建構函式:引數為name,age
toString方法:返回格式name-age

#2 編寫Comparator類

編寫NameComparator類,實現對name進行升序排序

編寫AgeComparator類,對age進行升序排序
#3.main方法中

輸入n
輸入n行name age,並建立n個物件放入陣列
對陣列按照name進行升序排序後輸出。
在3的基礎上對陣列按照age進行升序排序後輸出。
最後最後兩行使用如下程式碼輸出NameComparator與AgeComparator所實現的所有介面。

System.out.println(Arrays.toString(NameComparator.class.getInterfaces()));
System.out.println(Arrays.toString(AgeComparator.class.getInterfaces
()));

輸入樣例:

5
zhang 15
zhang 12
wang 14
Wang 17
li 17

輸出樣例:

NameComparator:sort
Wang-17
li-17
wang-14
zhang-15
zhang-12
AgeComparator:sort
zhang-12
wang-14
zhang-15
Wang-17
li-17
//最後兩行是標識資訊

參考程式碼:

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

class PersonSortable2
{ private String name; private int age; public PersonSortable2(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 String toString() { return this.name+"-"+this.age; } } class NameComparator implements Comparator<PersonSortable2>{ public int compare(PersonSortable2 o1,PersonSortable2 o2){ return o1.getName().compareTo(o2.getName()); } } class AgeComparator implements Comparator<Object>{ public int compare(Object o1,Object o2){ return ((PersonSortable2)o1).getAge() - ((PersonSortable2)o2).getAge(); } } public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); PersonSortable2 [] P = new PersonSortable2[n]; for(int i = 0;i<n;i++){ P[i] = new PersonSortable2(sc.next(),sc.nextInt()); } Arrays.sort(P,(new NameComparator())); System.out.println("NameComparator:sort"); for(int i=0;i<n;i++){ System.out.println(P[i]); } Arrays.sort(P,(new AgeComparator())); System.out.println("AgeComparator:sort"); for(int i=0;i<n;i++){ System.out.println(P[i]); } System.out.println(Arrays.toString(NameComparator.class.getInterfaces())); System.out.println(Arrays.toString(AgeComparator.class.getInterfaces())); } }