怎么对list里面的数据的某一个字段进行排序

本文介绍如何使用Java对List集合中的自定义对象进行排序,包括直接排序及通过自定义比较器实现的升序排列方法。

集合类List存放的数据,默认是按照放入顺序排序的。我们也可以对list中某一个元素进行排序。例如:

package test.tool.gui.dbtool.util;   
import java.util.ArrayList;   
import java.util.Collections;   
import java.util.Comparator;   
import java.util.List;   
public class Test {   
 public static void main(String[] args) {   
List list = new ArrayList();   
 //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中   
        Student s1 = new Student();   
        s1.setAge(20);   
        Student s2 = new Student();   
        s2.setAge(19);   
        Student s3 = new Student();   
        s3.setAge(21);   
        list.add(s1);   
        list.add(s2);   
        list.add(s3);   
        System.out.println("排序前:"+list);   
        Collections.sort(list, new Comparator(){   
            public int compare(Student o1, Student o2) {   
                //按照学生的年龄进行升序排列   
                if(o1.getAge() > o2.getAge()){   
                    return 1;   
                }   
                if(o1.getAge() == o2.getAge()){   
                    return 0;   
               }   
               return -1;   
            }   
        });    
        System.out.println("排序后:"+list);   
    }   
}   

class Student{    
    private int age;   
    public int getAge() {   
        return age;   
    }   
    public void setAge(int age) {   
        this.age = age;   
    }   
    @Override  
    public String toString() {   
        return getAge()+"";   
    }   
}  

或者:写一个对list进行特定字段排序的方法

public List<VisitDataDomain> staytimeSort(List<VisitDataDomain> list){
		VisitDataDomain temp = null;  
        boolean exchange = false;  
        for (int i = 0; i < list.size(); i++) {  
            exchange = false;  
            for (int j = list.size() - 2; j >= i; j--) {  
                if (((VisitDataDomain) list.get(j + 1)).getStaytime()<  
                        ((VisitDataDomain) list.get(j)).getStaytime()) { 
                    temp = (VisitDataDomain) list.get(j + 1);  
                    list.set(j + 1, (VisitDataDomain) list.get(j));  
                    list.set(j, temp);  
                    exchange = true;  
                }  
            }  
            if (!exchange)  
                break;  
        }  
	return list;
	}
Collections.sort(pvlist,new Comparator<VisitDataDomain>() {
			@Override
			public int compare(VisitDataDomain o1, VisitDataDomain o2) {
				if(o1.getPv()>o2.getPv()){
					return 1;
				}
				if(o1.getPv()>o2.getPv()){
					return 0;
				}
				return -1;
			}
		});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍六七AI编程

你猜你给我1分我要不要

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值