对list集合包含的对象排序

    具了解有几种方法实现,实现Comparable接口,或是实例化一个比较器,现在用 Comparator 比较器实例来做一个测试。

package test;

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

public class ComparableTest {
	public static void main(String[] args) {
        //实现Comparator接口的compare方法
		Comparator<Student> comparator = new Comparator<Student>() {
			public int compare(Student s1, Student s2) {
				// 先排年龄
				if (s1.age != s2.age) {
					return s1.age - s2.age;
				} else {
					// 年龄相同则按姓名排序
					if (!s1.name.equals(s2.name)) {
						return s1.name.compareTo(s2.name);
					} else {
						// 姓名也相同则按学号排序
						return s1.id - s2.id;
					}
				}
			}
		};
		
		Student stu1 = new Student(1, "zhangsan", "male", 28, "cs");
		Student stu2 = new Student(2, "lisi", "female", 19, "cs");
		Student stu3 = new Student(3, "wangwu", "male", 22, "cs");
		Student stu4 = new Student(4, "zhaoliu", "female", 17, "cs");
		Student stu5 = new Student(5, "jiaoming", "male", 22, "cs");

		ArrayList<Student> List = new ArrayList<Student>();
		List.add(stu1);
		List.add(stu2);
		List.add(stu3);
		List.add(stu4);
		List.add(stu5);
		//这里就会自动根据规则进行排序
		Collections.sort(List, comparator);
		display(List);
	}

	static void display(ArrayList<Student> lst) {
		for (Student s : lst)
			System.out.println(s);
	}
}

class Student {
	int age;
	int id;
	String gender;
	String name;
	String cs;

	Student(int id, String name, String gender, int age, String cs) {
		this.age = age;
		this.name = name;
		this.gender = gender;
		this.id = id;
		this.cs = cs;
	}

	public String toString() {
		return id + "  " + name + "  " + gender + "  " + age + "  " + cs;
	}
}

猜你喜欢

转载自x125858805.iteye.com/blog/2184170