Java里的數組降序


Java升序容易,降序不易。
基本類型不能降序,至少要是包裝類。

升序使用Arrays.sort()
降序要么使用Collections.reverse,要么實現Comparator接口

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class TestJava升序降序 {
	public static void m1升序() {
		int _arr[] = { 5, 3, 1, 2, 4 };
		// 類,或包裝類
		Arrays.sort(_arr);
		System.out.println("升序 輸出數組:");
		for (int i : _arr) {
			System.out.print(i);
		}
		System.out.println();
	}
	public static void _printArr(String _msg, Integer _arr[]) {
		System.out.println(_msg + " 輸出數組:");
		for (Integer i : _arr) {
			System.out.print("\t" + i);
		}
		System.out.println();
	}
	public static void 降序_Comparator版() {
		// 類,或包裝類
		Integer[] _arr = { 5, 3, 1, 2, 4 };
		// -----------------------------------------------
		Arrays.sort(_arr, new DescComparator());
		_printArr("降序sort版(實現獨立的Comparator)", _arr);
		// -----------------------------------------------
		_arr = new Integer[] { 5, 3, 1, 2, 4 };
		Arrays.sort(_arr, new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {
				return o2 - o1;
			}
		});
		_printArr("降序sort版(Comparator匿名內部類)", _arr);
		// -----------------------------------------------
		_arr = new Integer[] { 5, 3, 1, 2, 4 };
		Arrays.sort(_arr, (Integer o1, Integer o2) -> o2 - o1);
		_printArr("降序sort版(Comparator的Lambda表達式)", _arr);
	}
	public static void 降序_集合轉置版() {
		Integer _arr[] = { 5, 3, 1, 2, 4 };
		// 1.排序
		Arrays.sort(_arr);
		// 2.轉成List
		List<Integer> asList = Arrays.asList(_arr);
		// 3.借助集合的reverse方法
		Collections.reverse(asList);
		_printArr("降序_集合轉置版", _arr);
	}
	public static void main(String[] args) {
		m1升序();
		降序_Comparator版();
		降序_集合轉置版();
	}
}
class DescComparator implements Comparator<Integer> {
	@Override
	public int compare(Integer o1, Integer o2) {
		return o2 - o1;
	}
}

運行結果:
升序 輸出數組:
12345
降序sort版(實現獨立的Comparator) 輸出數組:
5 4 3 2 1
降序sort版(Comparator匿名內部類) 輸出數組:
5 4 3 2 1
降序sort版(Comparator的Lambda表達式) 輸出數組:
5 4 3 2 1
降序_集合轉置版 輸出數組:
5 4 3 2 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM