设一个学生的信息包括学号、姓名、出生日期和性别等。把n个学生的信息放入一个集合中,可以根据学号对学生信息进行检索,并且可以根据出生日期对学生进行排序输出。
要求
对于每个学生的个人信息,可以定义一个类来表示,命名为Student.其每个对象表示一个学生。题目要求按照学号对学生进行检索,这样可以以学号为键值,把学生的信息保存到一个Map中,出生日期可以用Date类表示。
为了完成检索和排序功能,定义一个工具类StuManager,在其中定义如下几个函数:
(1)初始化学生信息函数。
(2)检索学生信息函数。
(3)按照出生日期对学生进行排序函数。
import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.TreeMap;/*定义学生类*/public class Student {int id;//学号String gender;//性别Date birth;//生日String name;//姓名public Student(int id,String name,String gender,Date birth) {this.id=id;this.name=name;this.gender=gender;this.birth=birth;}public String toString() {return id+"-"+name+"-"+gender+"-"+birth;//返回个人信息}}
import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.TreeMap;/*定义学生管理类*/public class StuManager {int STU_NUM=10;TreeMap stuList=new TreeMap();//初始化学生信息void iniStudents() {for(int i=0;i<STU_NUM;i++) {int id=i;String name="name"+(int)(Math.random()*1000);//随机生成学生姓名String gender="女";if(i%2==0) {gender="男";}Date birth=new Date(new Date().getTime()+(long)(Math.random()*1000000000000l));//随机生成学生日期Student stu=new Student(id,name,gender,birth);stuList.put(id, stu);}}Student searchByID(int id) {Student stu=(Student)stuList.get(id);return stu;}//按照日期排序使用冒泡法List sortStudentByDate() {List stus=new ArrayList();//把学生加入列表stus.addAll(stuList.values());//使用冒泡法对学生进行排序for(int i=0;i<stus.size();i++) {for(int j=0;j<stus.size();j++) {Student tmp1=(Student)stus.get(i);Student tmp2=(Student)stus.get(j);//比较出生日期if(tmp1.birth.before(tmp2.birth)) {stus.set(i,tmp2);stus.set(j,tmp1);}}}return stus;}public static void main(String args[]) {StuManager manager=new StuManager();manager.iniStudents();//随机生成一个学号进行检索int id=(int)(Math.random()*10);System.out.println("检索学号:"+id);Student stu=manager.searchByID(id);if(stu==null) {System.out.println("未检索到学生信息");}elseSystem.out.println("检索到的学生信息是:"+stu);System.out.println("按日期排序的结果:");List l=manager.sortStudentByDate();//便利列表进行输出for (Iterator iterator=l.iterator();iterator.hasNext();) {Student tmp=(Student) iterator.next();System.out.println(tmp);}}}
运行结果:
设一个学生的信息包括学号 姓名 出生日期和性别等。把n个学生的信息放入一个集合中 可以根据学号对学生信息进行检索 并且可以根据出生日期对学生进行排序输出。