设一个学生的信息包括学号、姓名、出生日期和性别等。把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("未检索到学生信息");
}else
System.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);
}
}
}
运行结果: