黑马程序员技术交流社区
标题:
如何依据对象中的数据对集合中的对象排序
[打印本页]
作者:
刘国强
时间:
2013-4-10 02:26
标题:
如何依据对象中的数据对集合中的对象排序
本帖最后由 刘国强 于 2013-4-11 00:58 编辑
多个学生成绩的对象,添加到list集合后,如何根据需要,根据不同的成绩排名,对list集合进行排序
学生成绩的bean代码:
public class StuScoreAll {
private String stuid;
private String stuname;
private int math_1;
private int math_2;
private int lage_1;
private int lage_2;
private int english_1;
private int english_2;
private int pscore_1;
private int pscore_2;
private int fscore_1;
private int fscore_2;
private int zscore_1;
private int zscore_2;
private int zscore;
public int getZscore_1() {
return zscore_1;
}
public void setZscore_1(int zscore_1) {
this.zscore_1 = zscore_1;
}
public int getZscore_2() {
return zscore_2;
}
public void setZscore_2(int zscore_2) {
this.zscore_2 = zscore_2;
}
public int getZscore() {
return zscore;
}
public void setZscore(int zscore) {
this.zscore = zscore;
}
public String getStuid() {
return stuid;
}
public void setStuid(String stuid) {
this.stuid = stuid;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public int getMath_1() {
return math_1;
}
public void setMath_1(int math_1) {
this.math_1 = math_1;
}
public int getMath_2() {
return math_2;
}
public void setMath_2(int math_2) {
this.math_2 = math_2;
}
public int getLage_1() {
return lage_1;
}
public void setLage_1(int lage_1) {
this.lage_1 = lage_1;
}
public int getLage_2() {
return lage_2;
}
public void setLage_2(int lage_2) {
this.lage_2 = lage_2;
}
public int getEnglish_1() {
return english_1;
}
public void setEnglish_1(int english_1) {
this.english_1 = english_1;
}
public int getEnglish_2() {
return english_2;
}
public void setEnglish_2(int english_2) {
this.english_2 = english_2;
}
public int getPscore_1() {
return pscore_1;
}
public void setPscore_1(int pscore_1) {
this.pscore_1 = pscore_1;
}
public int getPscore_2() {
return pscore_2;
}
public void setPscore_2(int pscore_2) {
this.pscore_2 = pscore_2;
}
public int getFscore_1() {
return fscore_1;
}
public void setFscore_1(int fscore_1) {
this.fscore_1 = fscore_1;
}
public int getFscore_2() {
return fscore_2;
}
public void setFscore_2(int fscore_2) {
this.fscore_2 = fscore_2;
}
}
复制代码
作者:
张子凯
时间:
2013-4-10 08:40
本帖最后由 张子凯 于 2013-4-10 08:44 编辑
private String stuid;
private String stuname;
private int math_1;
private int math_2;
private int lage_1;
private int lage_2;
private int english_1;
private int english_2;
private int pscore_1;
private int pscore_2;
private int fscore_1;
private int fscore_2;
private int zscore_1;
private int zscore_2;
private int zscore;
复制代码
建议你把这些变量都标上中文意思,因为zscore_1 ,zscore_2是总分的意思吗?上边几个score又是什么? private int math_1;
private int math_2;是分数还是数学课程名称?还是课程代码?别人都看不懂
按照分数排序,你可以建一个实现Comparator接口的类,然后用Collections中的sort函数来排序,不过复写compare时,代码要健壮一些,就是说首先比总分,然后比其他分,最后都相同可以比学生ID。。。。
class StuScoreComparator implements Comparator<StuScoreAll>r{}
Collections.sort(List<StuScoreAll>,new StuScoreComparator<StuScoreAll>)
作者:
李永康
时间:
2013-4-10 11:07
你这个太复杂了 ,你可以写个简单的,实现Comparator接口。
作者:
王军行
时间:
2013-4-10 16:51
本帖最后由 王军行 于 2013-4-10 16:56 编辑
类 Collections的方法
static <T> void sort(List<T> list, Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序。
,你可以按照你的需求排序的成员属性写个比较器,
用比较器排序就可以了。
作者:
蓝色骨头
时间:
2013-4-10 19:29
多个学生成绩的对象,添加到list集合后,如何根据需要,根据不同的成绩排名,对list集合进行排序?
使用Collections 的sort方法 static <T> void sort(List<T> list, Comparator<? super T> c)
使用的时候new 一个Comparator的内部类,根据使用哪个成绩进行比较就行了。如
ArrayList<StuScoreAll > arratList = new ArrayList<StuScoreAll >();
arratList.add(new StuScoreAll());
……
Collections.sort(arratList, new Comparator<StuScoreAll>(){
@Override
public int compare(StuScoreAll o1, StuScoreAll o2) {
// TODO Auto-generated method stub
return Integer.compare(o1.getZscore(), o2.getZscore());
}
});
作者:
刘国强
时间:
2013-4-11 00:57
已经解决,谢谢各位的回答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2