集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。
2012-12-05 14:47
996 查看
集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。
Student.java
package CollectionText; import java.util.Date; public class Student implements Comparable<Student> { @Override public int compareTo(Student o) { return this.id - o.id; } private int id; private String name; private Date brithday; private String sex; public String getName() { return name; } @Override public int hashCode() { return this.id; } @Override public boolean equals(Object obj) { Student s = (Student) obj; return this.id == s.id; } public void setName(String name) { this.name = name; } public Date getBrithday() { return brithday; } public void setBrithday(Date brithday) { this.brithday = brithday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public void setId(int id) { this.id = id; } @Override // public String toString() { return "学号:" + id + "\t姓名 :" + name + "\t性别:" + sex + "\t\t生日:" + brithday; } public Integer getId() { return id; } }
=================================================================================================================================
StuMsg.java
package CollectionText; import java.util.Date; import java.util.Map; import java.util.Random; import java.util.TreeMap; import java.util.TreeSet; public class StuMsg { TreeMap<Integer, Student> stu_map = new TreeMap<Integer, Student>(); private Random r = new Random(); // 定义学号集合。 // 初始化 学生集合。 public void initialization(int stuNum) { for (int i = 0; i < stuNum; i++) { Student p = new Student(); p.setId(i); p.setName("name" + i); p.setBrithday(new Date((long) (System.currentTimeMillis() - (long) (360 * 24 * 3600 * 1000) * r.nextInt(1000)))); p.setSex(r.nextInt(100) % 2 == 0 ? "女" : "男"); stu_map.put(p.getId(), p); } } // 打印 学生集合。 public void disPlay(TreeMap<Integer, Student> stu_map) { for (Map.Entry<Integer, Student> me : stu_map.entrySet()) { // Integer key = me.getKey(); Student value = me.getValue(); System.out.println(value); } } /** * 使用TreeSet存储返回的排好序的学生集合。因为TreeSet在添加对象时根据对象的Comparable方法会自动排好序。 * * @param stuMap * @return */ // 根据学生的生日,对学生进行排序。并存在TreeSet中。 public TreeSet<Student> sort(TreeMap<Integer, Student> stuMap) { TreeSet<Student> temp = new TreeSet<Student>(new SortByBrithday()); for (int i = 0; i < stuMap.size(); i++) { temp.add(stuMap.get(i));// 添加元素。 } return temp; } // 根据学号进行检索函数。 public Student getId(int key) { return this.stu_map.get(key); } }
SortByBrithday.java(比较器)
package CollectionText; import java.util.Comparator; /** * 根据生日的排序器。 * @author Administrator * */ public class SortByBrithday implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { return o1.getBrithday().compareTo(o2.getBrithday()); } }
主类CollectionTest.java
package CollectionText; import java.util.TreeSet; public class CollectionTest { public static void main(String[] args) { TreeSet<Student> al = new TreeSet<Student>(); StuMsg sm = new StuMsg(); sm.initialization(6); sm.disPlay(sm.stu_map); System.out.println("++++++++++++++++++++++++++++++++++"); // 根据生日排序演示。 al = sm.sort(sm.stu_map); for (Student s : al) { System.out.println(s); } System.out.println("++++++++++++++++++++++++++++++++++"); // 检索演示。 System.out.println(sm.getId(3)); } }
运行结果:
学号:0 姓名 :name0 性别:女 生日:Sat Mar 27 04:46:34 CST 2004学号:1 姓名 :name1 性别:女 生日:Thu Jun 21 11:45:02 CDT 1990
学号:2 姓名 :name2 性别:男 生日:Sun Feb 12 00:31:59 CST 1984
学号:3 姓名 :name3 性别:男 生日:Thu Jul 25 06:13:12 CST 1985
学号:4 姓名 :name4 性别:女 生日:Mon Oct 14 23:05:21 CST 2002
学号:5 姓名 :name5 性别:男 生日:Sun May 02 06:48:00 CST 2004
++++++++++++++++++++++++++++++++++
学号:2 姓名 :name2 性别:男 生日:Sun Feb 12 00:31:59 CST 1984
学号:3 姓名 :name3 性别:男 生日:Thu Jul 25 06:13:12 CST 1985
学号:1 姓名 :name1 性别:女 生日:Thu Jun 21 11:45:02 CDT 1990
学号:4 姓名 :name4 性别:女 生日:Mon Oct 14 23:05:21 CST 2002
学号:0 姓名 :name0 性别:女 生日:Sat Mar 27 04:46:34 CST 2004
学号:5 姓名 :name5 性别:男 生日:Sun May 02 06:48:00 CST 2004
++++++++++++++++++++++++++++++++++
学号:3 姓名 :name3 性别:男 生日:Thu Jul 25 06:13:12 CST 1985
相关文章推荐
- 编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息 (初始数组为10个元素,每当数组存储满时,需要进行扩容,规则可以为翻倍也可以固定增长
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个Student类型的对象数组,对学号进行 升序排序并输出。
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个 Student 类型的对象数组,对学号进行 升序排序并输出
- 设计一个JFrame窗口,输入学生的基本信息,包括学号、姓名、学院、专业(下拉列表)、班级、籍贯(级联)、性别(单选按钮)、爱好(多选)、备注等,在界面中包括提交和重填按钮。提交后弹出窗口显示学生信息
- c#例题:输入学生的学号,姓名,分数,然后根据分数进行排序再输出最终结果。重点学习用结构体定义数组的表达方式
- 27.有10个学生,输出成绩最低的学生的信息(包括姓名、年龄、成绩、出生日期)(用结构体知识)。
- 创建一个学生类(Student),包括学号成绩,编程输入和显示学生的信息。建立一个人类(Person),包含姓名、性别和年龄,并作为学生类的基类
- 创建一个学生类(Student),包括学号和成绩,编程输入和显示学生的信息,建立一个人类(Person),包含姓名、性别和年龄,并作为学生类的基类
- java小练习(已知学生有学号,姓名,性别,年龄,身高,体重六项基本信息,依次从键盘录入该学生信息,完成后输出该生详细信息。)
- C#例题:输入学生学号,姓名,分数,然后根据分数进行排序。这个题是用集合和结构体来做,与上一题不同。掌握基础知识很重要
- 学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3
- c语言:用结构体变量输出学生的信息,包括学号,姓名,性别。
- 扩展练习4(学生类设计).设计一个友元函数,按照成绩从高到低的顺序输出姓名、学号和成绩信息
- 20150920结构体 定义一个学生的结构体,学号,姓名,身高,输入学生信息,按身高排序输出;
- 编写程序:建立一个学生数据链表,每个节点的信息包括如下内容:学号,姓名,性别年龄专业。对链表做如下处理。输入一个学号(专业),如果链表中的节点包含此学号(专业),则删去该结点。
- c语言:用结构体变量输出学生的信息,包括学号,姓名,性别。
- //编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg),方法包括求
- 编写一个函数print,打印一个学生的成绩数组,该书组中有五个学生的数据,每个学生的数据包括num(学号)、name(姓名)、score(3门课的成绩)、用主函数输入这些数据,用print函数输出这些
- 【C语言】用结构体数组完成:有5个学生(包括学号,姓名,成绩),要求按照成绩高低输出学生信息.
- 问题:设计一个大学教师和学生管理程序, 教师包括 编号、姓名、职称和教研室 数据的输入输出; 大学生包括编号、姓名、性别、班号、英语、高等数学和数据结构三门课程成绩的输入输出和计算平均分; 研究生包