您的位置:首页 > 其它

集合练习。学生信息包括学号、姓名、出生日期、性别。把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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐