java List接口的排序

构造两个类,一个学生类,包含学号、姓名以及年龄,一个测试类,建立一个学生类的链表,然后按照学号由小到大排序,学号相同(纯属举例使用)按年龄排序。

要利用Collections类中的sort方法,并且需要重写其中的排序因子,其实就是一个匿名内部类,在这个匿名内部类中写出需要的排序规则。

package helloworld;

public class Student {
	String id;
	String name;
	int age;
	
	public Student(){}
	public Student(String id, String name, int age){
		this.id = id;
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age != other.age)
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
}

package helloworld;

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

public class StudentTest {

	public static void main(String[] args) {
		List<Student> stu = new ArrayList<Student>();
		Student stu1 = new Student("1000", "aaa", 18);
		Student stu2 = new Student("1001", "bbb", 19);
		Student stu3 = new Student("1002", "ccc", 18);
		Student stu4 = new Student("1001", "ddd", 20);
		
		stu.add(stu1);
		stu.add(stu2);
		stu.add(stu3);
		stu.add(stu4);
		
		Iterator<Student> it = stu.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		Collections.sort(stu, new Comparator<Student>(){

			@Override
			public int compare(Student o1, Student o2) {
				if(o1.id.compareTo(o2.id) == 0){
					return o1.age-o2.age;
				}
				return o1.id.compareTo(o2.id);
			}	
		});
		System.out.println("-----------");	
		Iterator<Student> it1 = stu.iterator();
		while(it1.hasNext()){
			System.out.println(it1.next());
		}
		
	}
}




猜你喜欢

转载自blog.csdn.net/horizonhui/article/details/79878191