用集合实现排序,排序按对象中一个字段

package practice_index;
import java.util.ArrayList;
import java.util.List;
/*******
* 用集合实现排序,集合中封装对象
* @author tan
*
*
*/
public class Index_collection {
static List<person> list = new ArrayList<person>();
public static void main(String[] args) {
list.add( new person("tan",65));
list.add( new person("yan",78));
list.add( new person("hui",55));
list.add( new person("jr",55));
list.add( new person("aa",86));
list.add( new person("bb",55));
list.add( new person("cn",45));
list.add( new person("dd",36));
list.add( new person("ee",25));
person p = null;
person p1 = null;
person p2 = null;
//两个for循环,其中内循环是用于比较出从第一个对象到最后一个对象当中的最大(小)值,然后将最大(小)值放在最后(前)面
//外循环就让内循环重复集合的size()次,这样,根据对象的某个数字型字段就可以实现排序了
for(int i=0;i<list.size()&&list.size()>0;i++){

for(int j=0;j<list.size();j++){
if(j == 0){
continue;
}
p1 = (person)(list.get(j-1));
p2 = (person)(list.get(j));
//这是升序
if(p1.getGrade() - p2.getGrade() >= 0){
p = p1;
p1 = p2;
p2 = p;

if(list.get(j) != null){
list.remove(j);
list.add(j, p);
}
if(list.get(j-1) != null){
list.remove(j-1);
list.add(j-1,p1);
}
}
//这是降序
// if(p1.getGrade() - p2.getGrade() < 0){
// p = p1;
// p1 = p2;
// p2 = p;
//
// if(list.get(j) != null){
// list.remove(j);
// list.add(j, p);
// }
// if(list.get(j-1) != null){
// list.remove(j-1);
// list.add(j-1,p1);
// }
// }
}
}
int a = list.size();
for(int i=0;i<a;i++){

//如果是降序,就直接写成第"i+1"名
System.out.println("第 "+(list.size()-i)+" 名 "+list.get(i));
}
}
}
class person{
private String name;
private int grade;

public person(String name,int grade){
this.name = name;
this.grade = grade;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getGrade() {
return grade;
}

public void setGrade(int grade) {
this.grade = grade;
}

public String toString(){
return new String("姓名 : "+name+" 得分: "+grade);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值