- import java.io.*;
- import java.util.*;
- public class heimeTest {
- public static void main(String[] args) throws IOException {
- List<Student> list=inputStudent(); //调用获取键盘录入的函数
- TreeMap tm=outputStudent(list);//输出录入的结果的函数
- getluckSttudent(tm);//获取第三的版主及第四和第六的。
- }
- public static List inputStudent() throws IOException//获取键盘录入的函数
- {
- String line;
- Student stu=null;
- BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//读取键盘录入
- List<Student> list=new ArrayList<Student>();//创建ArrayList此处用了泛型
- while((line=br.readLine())!=null)//利用循环读取键盘录入
- {
- if("over".equals(line))//结束标记over
- break;
- String []s=line.split(" +");//切割字符串
- stu=new Student(s[0].trim(),s[1].trim());//去除字符串两端空格
- list.add(stu);//Student对象进入List表
- }
- return list;//返回List
- }
- public static TreeMap outputStudent(List list)//输出录入的结果的函数
- {
- final TreeMap<Student,Integer> tm=new TreeMap<Student,Integer>();//新建一个TreeMap集合此处用了泛型
- int len=list.size();
- for(int i=0;i<len;i++)//利用循环获取List中每个元素
- {
- Student s=(Student)list.remove(0);//弹出首元素
- System.out.println(s.name+"进去了");
- if(!(tm.containsKey(s)))//Student对象进入TreeMap
- tm.put(s,1);
- else
- {
- tm.put(s, tm.get(s)+1);
- }
- }
- for(Student s:tm.keySet())//高级For循环遍历TreeMap
- {
- System.out.println(s.name+"进去了"+tm.get(s)+"次");
- }
- return tm;
- }
- public static void getluckSttudent(TreeMap tm)//获取第三的版主及第四和第六的。
- {
- Set s=new TreeSet();
- Set<Student> set=tm.keySet();
- for(Student stu:set)
- {
- s.add((Integer)tm.get(stu));
- }
- Object[] arr=s.toArray();//获取TreeMap中的值的集合并转成数组
- Arrays.sort(arr);//对数组排序
- for(Student stu:set)
- {
- if(arr.length>=3)//如果数组长度大于3输出第3名
- {
- if((Integer)tm.get(stu)==arr[arr.length-3])
- System.out.println(stu.name+"次数排名第三");
- }
- if(arr.length>=4)//如果数组长度大于4输出第4名
- {
- if((Integer)tm.get(stu)==arr[arr.length-4])
- System.out.println(stu.name+"次数排名第四");
- }
- if(arr.length>=6)//如果数组长度大于6输出第6名
- {
- if((Integer)tm.get(stu)==arr[arr.length-6])
- System.out.println(stu.name+"次数排名第六");
- }
- }
- }
- }
- class Student implements Comparable//创建Student类并实现排序的接口
- {
- String name;
- String num;
- Student(String name,String num)//构造函数
- {
- this.name=name;this.num=num;
- }
- public int hashCode()//复写hashCode
- {
- return num.hashCode();
- }
- public boolean equals(Student p1)//复写equals
- {
- //Person1 p=(Person1)obj;
- return (this.name==p1.name)&&(this.num==p1.num);
- }
- public int compareTo(Object obj) {//复写compareTo
- Student stu=(Student)obj;
- return this.num.compareTo(stu.num);
- }
- }
复制代码 |