java 排序

package net.assist.action.handle;

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

public class MySort {

	public static void main(String[] args) {
		Student s1 = new Student();
		s1.setAge(12);
		s1.setName("zhangsan");

		Student s2 = new Student();
		s2.setAge(13);
		s2.setName("lisi");

		Student s3 = new Student();
		s3.setAge(10);
		s3.setName("wangwu");

		List<Student> list = new ArrayList<Student>();
		list.add(s1);
		list.add(s2);
		list.add(s3);

		// 原顺序
		for (Student s : list) {
			System.err.println(s.getAge());
		}

		Student[] students = new Student[list.size()];
		Arrays.sort(list.toArray(students));

		// 内部排序后
		for (Student s : students) {
			System.err.println(s.getAge());
		}

		// 外部排序
		Collections.sort(list, new StudentComparator());
		for (Student s : list) {
			System.err.println(s.getAge());
		}

	}
}

/**
 * 内部排列
 */
class Student implements Comparable<Student> {
	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 int compareTo(Student o) {
		if (this.age > o.getAge()) {
			return 1;
		} else if (this.age < o.getAge()) {
			return -1;
		}
		return 0;
	}

}

/**
 * 外部排序
 */
class StudentComparator implements Comparator<Student> {

	@Override
	public int compare(Student o1, Student o2) {
		if (o1.getAge() > o2.getAge()) {
			return 1;
		} else if (o1.getAge() < o2.getAge()) {
			return -1;
		}
		return 0;
	}

}

你可能感兴趣的:(java)