使用Comparator对List排序

废话不多说,直接上代码。


UserVO.java

package com.lrb.sort.test;

import java.io.Serializable;

public class UserVO implements Serializable {
	private String userCde;
	private String userName;
	private int age;
	
	public UserVO(String userCde, String userName, int age) {
		super();
		this.userCde = userCde;
		this.userName = userName;
		this.age = age;
	}
	
	public String getUserCde() {
		return userCde;
	}
	public void setUserCde(String userCde) {
		this.userCde = userCde;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

UserComparator.java

package com.lrb.sort.test;

import java.util.Comparator;

public class UserComparator implements Comparator {

	public int compare(Object o1, Object o2) {
		UserVO user1 = (UserVO) o1;
		UserVO user2 = (UserVO) o2;
		
		//首先比较用户编号,编号相同再比较名字,名字相同再比较年龄
		int flag1 = user1.getUserCde().compareToIgnoreCase(user2.getUserCde());
		if(flag1 == 0){
			int flag2 = user1.getUserName().compareToIgnoreCase(user2.getUserName());
			if(flag2 == 0){
				return user1.getAge()<=user2.getAge()?-1:1;
			}else{
				return flag2;
			}
		}else{
			return flag1;
		}
	}

}


ListContainsBeanSort.java

package com.lrb.sort.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListContainsBeanSort {

	public static void main(String[] args) {
		List testArry = new ArrayList();
		
		//为要排序的集合添加测试数据
		testArry.add(new UserVO("000012","工商银行天津分行",22));
		testArry.add(new UserVO("000013","中国人发银行",23));
		testArry.add(new UserVO("000015","招商银行济南分行",23));
		testArry.add(new UserVO("00001801","招商银行高新区分行",23));
		testArry.add(new UserVO("000045","民生银行总行",23));
		testArry.add(new UserVO("00006709","民生银行济南分行",23));
		testArry.add(new UserVO("000011","工商银行济南分行",23));
		testArry.add(new UserVO("000012","工商银行天津分行",23));
		testArry.add(new UserVO("000012","聊城工商银行分行",23));
		
		
		//排序操作
		Collections.sort(testArry, new UserComparator());
		
		//展示排序后内容
		for(int i=0;i<testArry.size();i++){
			UserVO user = (UserVO) testArry.get(i);
			System.out.println(user.getUserCde()+"\t"+user.getUserName()+"\t"+user.getAge());
		}
	}
}

控制台打印排序后的结果:

000011 工商银行济南分行23
000012 工商银行天津分行22
000012 工商银行天津分行23
000012 聊城工商银行分行23
000013 中国人发银行 23
000015 招商银行济南分行23
00001801 招商银行高新区分行23
000045 民生银行总行 23
00006709 民生银行济南分行23

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值