Map t=new HashMap();
Student astu1=new Student();
//...实例化三个Student对象
t.put("1", astu1);
t.put("2", astu2);
t.put("3", astu3);
如何将他们排序放到TreeSet中。
能提供一些全点的TreeSet的方法吗?
小弟刚入门,万分感谢!
Student astu1=new Student();
//...实例化三个Student对象
t.put("1", astu1);
t.put("2", astu2);
t.put("3", astu3);
如何将他们排序放到TreeSet中。
能提供一些全点的TreeSet的方法吗?
小弟刚入门,万分感谢!
补充一下。
Student 有三个属性,一个ID,一个Name,一个Grade。我想用TreeSet来排序,并求出所有Grade的最大值和最小值。
TreeMap t=new TreeMap();
Student astu1=new Student();
//...实例化三个Student对象,id排序
t.put("1", astu1);
t.put("2", astu2);
t.put("3", astu3);
//...实例化三个Student对象,name排序
t.put("name1", astu1);
t.put("name2", astu2);
t.put("name3", astu3);
.....................
This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
你要求的是类似数据库中表的功能,这应该是Key-Value的一种扩展,所以最符合你的要求的实际JFC中的类应该是实现了Map接口的类,以下都是,哪个最符合你的要求,应该因需而选了
AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap
* 学生类
*
* @author mengfanpp
*
*/
public class Student { private String id; private String name; private Boolean sex; private Calendar birthday;
/**
* 学生类简单构造函数
*/
public Student() {
super();
// TODO Auto-generated constructor stub
} /**
* @return Returns the birthday.
*/
public Calendar getBirthday() {
return birthday;
} /**
* @param birthday
* The birthday to set.
*/
public void setBirthday(Calendar birthday) {
this.birthday = birthday;
} /**
* @return Returns the id.
*/
public String getId() {
return id;
} /**
* @param id
* The id to set.
*/
public void setId(String id) {
this.id = id;
} /**
* @return Returns the name.
*/
public String getName() {
return name;
} /**
* @param name
* The name to set.
*/
public void setName(String name) {
this.name = name;
} /**
* @return Returns the sex.
*/
public String getSex() {
return sex == true ? "男":"女";
} /**
* @param sex
* The sex to set.
*/
public void setSex(Boolean sex) {
this.sex = sex;
} //在定义类时,最好总是重新定义equals()与hashCode()方法以及toString(),以符合Java的设计规范。
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object other) {
// TODO Auto-generated method stub
if(this == other)
return true;
if(!(other instanceof Student))
return false;
final Student stud = (Student) other;
if(!id.equals(stud.getId())){
return false;
}
return true;
} /* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
// TODO Auto-generated method stub
return id.hashCode();
} /* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuilder studInfo = new StringBuilder("");
studInfo.append("学号:"+id+" 的学生姓名为:"+name+",性别为:"+this.getSex()+",出生日期为:"+DateInfo.getStrFromDateTime(birthday,"yyyy-MM-dd") );
return studInfo.toString();
}}
StudentComparator.javapackage net.mengfanpp;import java.util.Comparator;/**
* @author mengfanpp
*
*/
public class StudentComparator<T> implements Comparator<Student> { /* (non-Javadoc)
* @see java.util.Comparator#compare(T, T)
*/
public int compare(Student arg0, Student arg1) {
// TODO Auto-generated method stub
//按学号正序排列
//return arg0.getId().compareTo(arg1.getId());
//按出生日期正序排列
//return arg0.getBirthday().compareTo(arg1.getBirthday())
//按出生日期倒序排列
return arg0.getBirthday().compareTo(arg1.getBirthday()) * -1;
}
}
TreeSetDemo3.javapackage net.mengfanpp;import java.util.TreeSet;
import java.util.Set;
import java.util.Comparator;/**
* 练习使用TreeSet,主要练习了排序(StudentComparator定义了排序规则)
*
* @author mengfanpp
*
*/
public class TreeSetDemo3 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Comparator<Student> comparator = new StudentComparator<Student>();
Set<Student> set = new TreeSet<Student>(comparator);
Student stud1 = new Student();
Student stud2 = new Student();
Student stud3 = new Student();
//Student stud4 = new Student(); stud1.setId("002");
stud1.setName("张三");
stud1.setSex(true);
stud1.setBirthday(DateInfo.getDateTimeFromStr("1979-03-12","yyyy-MM-dd")); stud2.setId("001");
stud2.setName("李斯");
stud2.setSex(true);
stud2.setBirthday(DateInfo.getDateTimeFromStr("1980-05-16","yyyy-MM-dd")); stud3.setId("003");
stud3.setName("良葛格");
stud3.setSex(true);
stud3.setBirthday(DateInfo.getDateTimeFromStr("1975-08-10","yyyy-MM-dd"));
set.add(stud1);
set.add(stud2);
set.add(stud3); // 使用增强的for循环显示对象
for (Student stud : set) {
System.out.println(stud.toString() + " ");
}
System.out.println(); }}
con是Map的实例对象。
Collection emps=con.values();
Student max=(Student) ((TreeSet) emps).first();
System.out.println(max.Grade);
输出要报错。(Grade是Student的属性,double型)
return this.grade;
}public void setGrade(double grade){
this.grade = grade;
}Student stud = new Student();
stud.getGrade(); //
this.sortfield = sortfield;
} public int compare(Object o1,Object o2) {
//利用反射得到sortfield的值,然后比较,返回true or false
}
}最后这样排序Collections.sort(List list,Comparator comparator);就得到了你说要的结果