Java中的Arrays.sort(),升序降序?

365app下载安装官方免费下载 📅 2025-09-21 20:16:31 👤 admin 👁️ 2379 ❤️ 884
Java中的Arrays.sort(),升序降序?

一、一维数组比较

1、默认升序

首先对于sort()函数来说默认是升序的

import java.util.Arrays;

public class helloworld {

public static void main(String[] args) {

int[] arr={1,4,3,6,7,9};

Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

}

}

2、区间排序sort(T[] a,int formIndex, int toIndex)

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

Integer[] arr2={1,4,3,8,2,9,11,3};

Arrays.sort(arr2,2,5);

System.out.println(Arrays.toString(arr2));

}

}

3、降序

如果想要降序,Arrays.sort(scores,Collections.reverseOrder());。

首先要注意的是不能用int这个类型了,要用Integer,不能使用基本类型(int,double, char),如果是int型需要改成Integer,float要改成Float

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

Integer[] arr2={1,4,3,6,7,9,11};

Arrays.sort(arr2, Collections.reverseOrder());

System.out.println(Arrays.toString(arr2));

}

}

4、重载比较器进行降序

也可以重载比较器,自定义比较

import java.util.Arrays;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

Integer[] arr2={1,4,3,6,7,9};

Arrays.sort(arr2, new Comparator() {

public int compare(Integer o1, Integer o2) {

return o2-o1;

}

});

System.out.println(Arrays.toString(arr2));

}

}

二维数组比较

1、按照第一元素比较

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};

int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};

Arrays.sort(a1, new Comparator() {

@Override

public int compare(int[] o1, int[] o2) {

return o1[0]-o2[0];

}

});

System.out.println("按照第一元素比较 第一种方法");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a1[i]));

}

Arrays.sort(a2,(a, b)->(a[0]-b[0]));

System.out.println("按照第一元素比较 第二种方法");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a2[i]));

}

}

}

若想第一元素相等,按第二元素比较

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};

int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};

Arrays.sort(a1, new Comparator() {

@Override

public int compare(int[] o1, int[] o2) {

if(o1[0]==o2[0]){

return o1[1]-o2[1];

}

return o1[0]-o2[0];

}

});

System.out.println("按照第一元素比较 也可以比较第二元素 第一种方法");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a1[i]));

}

// Arrays.sort(a2,(a, b)->(a[0]-b[0]));

// System.out.println("按照第一元素比较 第二种方法");

// for (int i = 0; i < a1.length; i++) {

// System.out.println(Arrays.toString(a2[i]));

// }

}

}

2、按照第二元素比较

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};

int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};

Arrays.sort(a1, new Comparator() {

@Override

public int compare(int[] o1, int[] o2) {

return o1[1]-o2[1];

}

});

System.out.println("按照第二元素比较 第一种方法");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a1[i]));

}

Arrays.sort(a2,(a, b)->(a[1]-b[1]));

System.out.println("按照第二元素比较 第二种方法");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a2[i]));

}

}

}

3、二维数组降序排序

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

public class helloworld {

public static void main(String[] args) {

int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};

int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};

Arrays.sort(a1, new Comparator() {

@Override

public int compare(int[] o1, int[] o2) {

return o2[0]-o1[0];

}

});

System.out.println("按照第一元素比较 第一种方法 降序");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a1[i]));

}

Arrays.sort(a2,(a, b)->(b[0]-a[0]));

System.out.println("按照第一元素比较 第二种方法 降序");

for (int i = 0; i < a1.length; i++) {

System.out.println(Arrays.toString(a2[i]));

}

}

}

总结

对于Arrays.sort(),可以进行重载比较器来自定义比较,可以升序排序也可以降序排序

在重载或者Arrays.sort(a2,(a, b)->(b[0]-a[0]));中

我们观察(a,b),若a-b或者比较器里面return a-b,则是升序排序

若b-a或者比较器里面return b-a,则是降序排序。

相关推荐

dnf婚房满属性提升率解析 dnf婚房有必要升满级吗
Best365官网登录

dnf婚房满属性提升率解析 dnf婚房有必要升满级吗

📅 09-20 👁️ 5230
为什么您的 Android 手机不断重启(以及 9 种修复方法)
365app下载安装官方免费下载

为什么您的 Android 手机不断重启(以及 9 种修复方法)

📅 07-28 👁️ 9221
小号怎么吹响 小号吹不出声音来是怎么回事
365app下载安装官方免费下载

小号怎么吹响 小号吹不出声音来是怎么回事

📅 07-17 👁️ 9102