首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

将set会合转为list并对对象进行排序

2012-06-30 
将set集合转为list并对对象进行排序之前用hibernate的时候,遇到一对多的表结构。比如班级(class),学生(stud

将set集合转为list并对对象进行排序
之前用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;}@Overridepublic 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());}}}
1 楼 Technoboy 2011-11-07   1.个人建议,还是使用comparator接口。这样,无需改变类结构。并且stude就是一个VO或者PO
2.即使楼主想使用Comparable,那也需要public class Stude implements Comparable<Stude> 2 楼 bingyingao 2011-11-07   Technoboy 写道1.个人建议,还是使用comparator接口。这样,无需改变类结构。并且stude就是一个VO或者PO
2.即使楼主想使用Comparable,那也需要public class Stude implements Comparable<Stude>
多谢仁兄点拨,我会进一步尝试,希望有机会讨教...

热点排行