标签:返回 使用 strong main auto 题目 包括 get 实现类
题目描述:
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
输入描述:
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。接下来的N行有N个职工的信息:包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
输出描述:
可能有多组测试数据,对于每组数据,输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。关键字顺序:年龄>工号>姓名,从小到大。
输入例子:
5
501 Jack 6
102 Nathon 100
599 Lily 79
923 Lucy 15
814 Mickle 65
输出例子:
501 Jack 6
923 Lucy 15
814 Mickle 65
1 package Test; 2 /*List是一个接口,而ArrayList是List接口的一个实现类。 ArrayList类继承并实现了List接口。 3 * List list = new ArrayList(),list只有List的方法,对ArrayList独有的方法是无法继承的 4 * 为什么要用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢? 5 问题就在于List接口有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 6 LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList(); 其它使用了list地方的代码根 7 本不需要改动。 假设你开始用ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了ArrayList实现类特有的方法和属性。 8 * 9 */ 10 11 import java.io.BufferedInputStream; 12 import java.util.ArrayList; 13 import java.util.Collections; 14 import java.util.List; 15 import java.util.Scanner; 16 17 public class Main { 18 public static void main(String args[]) { 19 Scanner sc = new Scanner(new BufferedInputStream(System.in)); 20 while (sc.hasNext()) { 21 List<Employee> list=new ArrayList<>(); 22 int n=sc.nextInt(); 23 sc.nextLine(); 24 for(int i=0;i<n;i++){ 25 String[] str=sc.nextLine().split(" "); 26 int id=Integer.parseInt(str[0]); 27 String name=str[1]; 28 int age =Integer.parseInt(str[2]); 29 Employee employee =new Employee(id, age, name); 30 list.add(employee); 31 } 32 Collections.sort(list); 33 34 if(list.size()<=3){ 35 for(Employee e:list){ 36 System.out.println(e);//正是改写了toString方法才可以直接输出 37 } 38 }else{ 39 System.out.println(list.get(0)); 40 System.out.println(list.get(1)); 41 System.out.println(list.get(2)); 42 } 43 } 44 } 45 } 46 47 //定义员工类 48 class Employee implements Comparable<Employee>{ 49 //上面用到了Collections.sort方法,在这个类中要实现Comparable,对这块还是不很清楚 50 private int id; 51 private int age; 52 private String name; 53 54 public Employee(int id,int age,String name){ 55 this.id=id; 56 this.age=age; 57 this.name=name; 58 } 59 60 public int compareTo(Employee e){ 61 if(this.age==e.age){ 62 if(this.id==e.id){ 63 return this.name.compareTo(e.name); 64 }else{ 65 return this.id-e.id; 66 } 67 }else{ 68 return this.age-e.age; 69 } 70 } 71 //toString默认返回类中对象在堆中的内存地址,我们想让它直接按照要求格式输出就要重写该方法 72 @Override 73 public String toString() { 74 // TODO Auto-generated method stub 75 return id+" "+name+" "+age; 76 } 77 }
标签:返回 使用 strong main auto 题目 包括 get 实现类
原文地址:https://www.cnblogs.com/youngao/p/9749614.html