List里的对象按照指定字段排序

User.java(List集合的泛型类)

public class User {

	private String name;

	private int age;

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + "]";
	}

}


Sort.java(测试类<按照User对象里的age字段进行排序>)

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

public class Sort {

	public static void main(String[] args) {
		List<User> list = new ArrayList<User>();

		// 定义对象并set值
		User user = null;
		for (int i = 0; i < 10; i++) {
			user = new User();
			user.setName("zhangsan" + (i + 1));
			user.setAge((int) (Math.random() * 100 + 1));
			list.add(user);
		}
		System.out.println("排序前:");
		for (User u : list) {
			System.out.println(u.toString());
		}

		// 按照年龄升序:
		Collections.sort(list, new Comparator<User>() {
			@Override
			public int compare(User u1, User u2) {
				if (u1.getAge() > u2.getAge()) {
					return 1;
				}
				if (u1.getAge() == u2.getAge()) {
					return 0;
				}
				return -1;
			}
		});
		System.out.println("升序,排序后:");
		for (User u : list) {
			System.out.println(u.toString());
		}

		// 按照年龄降序:
		Collections.sort(list, new Comparator<User>() {
			public int compare(User u1, User u2) {
				if (u1.getAge() > u2.getAge()) {
					return -1;
				}
				if (u1.getAge() == u2.getAge()) {
					return 0;
				}
				return 1;
			}
		});
		System.out.println("降序,排序后:");
		for (User u : list) {
			System.out.println(u.toString());
		}
	}

}

测试结果输出如下:

排序前:
User [name=zhangsan1, age=10]
User [name=zhangsan2, age=34]
User [name=zhangsan3, age=51]
User [name=zhangsan4, age=32]
User [name=zhangsan5, age=5]
User [name=zhangsan6, age=48]
User [name=zhangsan7, age=39]
User [name=zhangsan8, age=16]
User [name=zhangsan9, age=80]
User [name=zhangsan10, age=33]
升序,排序后:
User [name=zhangsan5, age=5]
User [name=zhangsan1, age=10]
User [name=zhangsan8, age=16]
User [name=zhangsan4, age=32]
User [name=zhangsan10, age=33]
User [name=zhangsan2, age=34]
User [name=zhangsan7, age=39]
User [name=zhangsan6, age=48]
User [name=zhangsan3, age=51]
User [name=zhangsan9, age=80]
降序,排序后:
User [name=zhangsan9, age=80]
User [name=zhangsan3, age=51]
User [name=zhangsan6, age=48]
User [name=zhangsan7, age=39]
User [name=zhangsan2, age=34]
User [name=zhangsan10, age=33]
User [name=zhangsan4, age=32]
User [name=zhangsan8, age=16]
User [name=zhangsan1, age=10]
User [name=zhangsan5, age=5]

猜你喜欢

转载自blog.csdn.net/dai_haijiao/article/details/80333361