之前用hibernate的时候,遇到一对多的表结构。比如班级(class),学生(student)时,hibernate都是将student作为一个set集合放在班级对象之中,这是无序的,而我们往往要根据student的id或者分数进行排序。以前采用的办法很笨,遍历set,再借助数组将其按照所要求的顺序加入到list中。这两天发现一种比较好的方法如下:
public class Stude implements Comparable<Object> {
private String id;
private String name;
private String address;
public Stude() {
}
public Stude(String id,String name,String address) {
this.id=id;
this.name=name;
this.address=address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int compareTo(Object arg0) {
Stude stu1=(Stude)arg0;
/*根据id排序
* int stu0Id=Integer.parseInt(id);
int stu1Id=Integer.parseInt(stu1.id);
return stu0Id>stu1Id?1:(stu0Id==stu1Id?0:-1);*/
return name.compareTo(stu1.getName());//根据name排序
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Stude stu=new Stude("1","gao","hz");
Stude stu2=new Stude("2","aao","hz");
Stude stu3=new Stude("3","zao","hz");
Set<Stude> studeset=new HashSet<Stude>();
studeset.add(stu);
studeset.add(stu2);
studeset.add(stu3);
List<Stude> stuList=new ArrayList<Stude>();
stuList.addAll(studeset);
Collections.sort(stuList);
for (Stude stude : stuList) {
System.out.println(stude.getName());
}
}
}
分享到:
相关推荐
Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan");... //放入到Set集合中 Set userset=new HashSet(); userset.add(u1); userset.add(u2); userset.add(u3);
定义学生类,每个学生有3门课的成绩, 从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:如:zhagnsan...并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。(如果总分相同,按照姓名排序)
使用C++容器类中的set容器对类进行排序!!!
set集合是无序的相较于list集合是没有下标的,hashset底层去重,与hashCode、equals方法相关,排序的元素不是String,而是对象Person
Tedu一阶段JavaSet集合和List集合。
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List<Person> list = getData(); // 获取无序数据 new ...
LIST对象排序通用方法HIBERNATE的SET排序.pdf
集合进阶List、Set集合.md
List– 对象之间有指定的顺序,允许重复元素,并引入位置下标。 Map – 接口用于保存关键字(Key)和数值(Value)的集合,集合中的每个对象加入时都提供数值和关键字。Map 接口既不继承 Set 也不继承 ...
分析LIST对象排序通用方法HIBERNATE的SET排序.pdf
义一个整数集合类integerSet。这种类型的对象可以存储10个20~80之间的整数,即他的内部有一个整型数组存储数据。...(4) 将一个整型数据插入到一个集合对象中。 (5) 从一个集合中删除某一个元素。
java 对象集合按字段排序
//对list数组进行自然排序 Collections.sort(list); //依次检索输出list的所有对象 // for(int i=0;i<list.size();i++){ // System.out.println(list.get(i)); // } Iterator Iter=list.iterator(); while...
Java集合排序及java集合类详解(Collection、List、Map、Set)
详细描述map、list、set的常用子类特性,各个场景的适用。
LIST对象排序通用方法HIBERNATE的SET排序[整理].pdf
一:Set集合去掉List集合中重复元素 public static void main(String[] args) { //利用set集合 去除ArrayList集合中的重复元素 ArrayList list = new ArrayList(); list.add("1"); list.add("1"); list.add("2...
set list ArrayList等java集合类详述