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

您所在的位置:网站首页 access升序和降序代码 Java中的Arrays.sort(),升序降序?

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

2024-07-02 14:19| 来源: 网络整理| 查看: 265

一、一维数组比较 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,则是降序排序。

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3