现在的位置: 首页 > 综合 > 正文

ArrayList自定义排序

2013年08月22日 ⁄ 综合 ⁄ 共 1617字 ⁄ 字号 评论关闭
package com.jadyer.test;

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

/**
 * 通过实现Comparator接口,重写其compare()方法的方式自定义排序ArrayList
 * @create Oct 16, 2013 5:43:29 PM
 * @author 玄玉
 */
public class SortTest {
	public static void main(String[] args) {
		List<User> userList = new ArrayList<User>();
		userList.add(new User(33, "11", "智能客服"));
		userList.add(new User(26, "7", "基础功能"));
		userList.add(new User(1, "2", "首页"));
		userList.add(new User(6, "7", "特色功能"));
		userList.add(new User(17, "10", "运营管理"));
		userList.add(new User(41, "12", "帐号管理"));
		userList.add(new User(20, "3", "推广模块"));
		userList.add(new User(38, "9", "素材管理"));
		for(int i=0; i<userList.size(); i++){
			System.out.println(userList.get(i));
		}
		System.out.println("-----------------------------------------------------------------------");
		System.out.println("以上是自定义排序前的顺序,默认是按照ArrayList存放顺序显示的");
		System.out.println("以下是自定义排序后的顺序,即先Age排序,Age相同时再按Name排序");
		System.out.println("-----------------------------------------------------------------------");
		Collections.sort(userList, new Comparator<User>(){
			@Override
			public int compare(User o1, User o2) {
				if(!o1.getAge().equals(o2.getAge())){
					return Integer.parseInt(o1.getAge()) - Integer.parseInt(o2.getAge());
				}else{
					return o1.getName().compareTo(o2.getName());
				}
			}
		});
		for(int i=0; i<userList.size(); i++){
			System.out.println(userList.get(i));
		}
	}
}


class User {
	private int id;      //用户编号
	private String age;  //用户年龄(这里故意让它为String)
	private String name; //用户名
	public User(int _id, String _age, String _name){
		this.id = _id;
		this.age = _age;
		this.name = _name;
	}
	public String getAge() {
		return age;
	}
	public String getName() {
		return name;
	}
	@Override
	public String toString() {
		return this.id + "--" + this.age + "--" + this.name;
	}
}

抱歉!评论已关闭.