描述
我们规定乘坐公共交通工具时,正常情况下乘客按序列号 number
的升序顺序排队就座,当乘客中有年龄 age
小于 5
岁(不含 5 岁)的幼儿乘客或是年龄 age
大于 60
岁(不含 60 岁)的老年人乘客时,优先按序就座。现在给你一个乘客列表,请你安排他们按序就座,结果请通过调用 System.out.println
方法进行输出。
样例1
Jack 21
Jimi 69
July 52
July 42
Jane 70
样例2
LingHu 65
Haly 59
Jack 24
Jane 2
Fualy 36
Person类
public class Person {
public String name;
public int age;
public int number;
public Person(String name, int age, int number) {
this.name = name;
this.age = age;
this.number = number;
}
public String toString() {
return "number = " + number + ", name = " + name + ", age = " + age;
}
}
Sort类
import java.util.*;
public class Sort {
public void priority(List<Person> list) {//这里采用匿名内部类的方式
list.sort(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
if(o1.age<5||o1.age>60){
if(o2.age<5||o2.age>60){//年龄都属于特权级别的,按序号排
return o1.number-o2.number;
}else{
return -1;//o1小放在前面
}
}else{
if(o2.age<5||o2.age>60){
return 1;//o2小,排前面
}else{
return o1.number-o2.number;
}
}
}
});
for(Person p:list){
System.out.println(p.toString());
}
}
}
测试类
import java.util.*;
public class SortTest {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
List<Person> list = new ArrayList<>();
int i = 0;
String str;
for(i=0;i<5;i++){
str=sc.nextLine();
String words[]=str.split(" ");
list.add(new Person(words[0],Integer.parseInt(words[1]),i));
}
Sort solution = new Sort();
solution.priority(list);
sc.close();
}
}