Java List的sort()方法通过改写compare()实现升序、降序、倒序

本文旨在通过重写Comparator接口的compare()方法实现对List的升序、降序、倒序排序。

首先明确一点:

compare(Integer o1, Integer o2){}中,o1代表的是List容器中的后一个元素,o2代表的是List容器中的前一个元素!

通过以下例子可以清晰了解这一点:

public static void main(String[] args) {

		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		
		list.sort(new Comparator() {
			public int compare(Integer o1, Integer o2) {
				System.out.println(o1 + "," + o2);//输出o1,o2
				return 0;
			}
		});
	}

输出为:

2,1

3,2

升序

代码:

public static void main(String[] args) {

		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		
		list.sort(new Comparator() {
			public int compare(Integer o1, Integer o2) {
				if(o1>o2)
					return 1;//第二个元素(o1)比第一个元素(o2)大,返回1
				if(o1==o2)
					return 0;
				return -1;
			}//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换
		});
		
		System.out.println(list.toString());
	}

输出:

[1,2,3]

降序

代码:

public static void main(String[] args) {

		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		
		list.sort(new Comparator() {
			public int compare(Integer o1, Integer o2) {
				if(o1>o2)
					return -1;//第二个元素(o1)比第一个元素(o2)大,返回-1
				if(o1==o2)
					return 0;
				return 1;
			}//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换
		});
		
		System.out.println(list.toString());

输出:

[3,2,1]

倒序

代码:

public static void main(String[] args) {

		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		
		list.sort(new Comparator() {
			public int compare(Integer o1, Integer o2) {
				return -1;
			}//倒序就直接返回-1
		});
		
		System.out.println(list.toString());
	}

输出:

[3,2,1]

你可能感兴趣的:(Java)