1. 程式人生 > 其它 >Java,Arrays.sort()總結

Java,Arrays.sort()總結

1.一維陣列排序

int[] intArray = new int[]{1,34,5,-9};
Arrays.sort(intArray);
System.out.println(Arrays.toString(intArray));

2.一維陣列逆序

Java的Arrays.sort()僅支援對引用資料型別進行自定義排序,如果是基本資料型別(如int型別),將無法使用Comparator進行自定義排序。

可以先正序再reverse

int[] nums = new int[]{1,6,4,55,61,3,5,8,4,2,8,15,61,33};
Arrays.sort(nums);
for (int i = 0; i < nums.length/2; i++) {
int temp = nums[i];
nums[i] = nums[nums.length - 1 - i];
nums[nums.length - 1 - i] = temp;
}
System.out.println(Arrays.toString(nums));

3.二維陣列排序

public static void main(String[] args) {
    int[][] intvs = {{1, 6}, {2, 3}, {2,1}};
    // 按照第一列升序排列,第一列相同時按照第二列降序排列
    Arrays.sort(intvs, (a, b) -> {
        if (a[0] == b[0]) {
            return b[1] - a[1];
        }
        return a[0] - b[0];
    });
    for(int[] intv:intvs){
        System.out.println(Arrays.toString(intv));
    }
}
/*
執行結果:
[1, 6]
[2, 3]
[2, 1]
*/

4.字串陣列排序

String[] strArray = new String[]{"Z", "a", "D","b","N","n"};
//字串排序(先大寫後小寫)
Arrays.sort(strArray);
System.out.println(Arrays.toString(strArray)); //[D, N, Z, a, b, n]
//字串排序(忽略大小寫)
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(strArray));//[a, b, D, N, n, Z]

5.字串按長度排序

String[] strs=new String[10];
Arrays.sort(strs, (String first, String second) ->
{
    if(first.length() < second.length()) return -1;
    else if(first.length() > second.length()) return 1;
    else return 0;
});