java中关于Arrays.sort()方法的使用

java中关于Arrays.sort()方法的使用

通过Arrays类事物静态sort()方法可以实现对数组的排序。sort方法提供了多种重载方式,可以对任意类型的数组进行升序排序。

方法摘要:

Type

Method

Description

static void

sort(T[] a)

对指定类型的数组按数字升序排序

static void

sort(T[] a, int fromIndex, int toIndex)

再数组中指定范围,按数字升序排序

static <T> void

sort(T[] a, Comparator<? super T> c)

根据指定的比较器引发的顺序对指定的对象数组进行排序

static <T> void

sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)

根据指定的比较器引发的顺序对指定的对象数组的指定范围进行排序

1. Arrays.sort(T[] a) 对指定类型的数组按数字升序排序,时间复杂度:n*log(n)。

import java.util.Arrays;                   //导入Java.util.Arrays类

public class Taxis {
	public static void main(String[]args) {
		int arr[]=new int[] {2,3,7,6,4,9,0,1,8,5};  //声明数组
		Arrays.sort(arr);                  //将数组进行升序排序
		for(int i=0;i<arr.length;i++) {    //输出数组
			System.out.print(arr[i]+" ");
		}
	}

}

Output:0 1 2 3 4 5 6 7 8 9 

2. Arrays.sort(T[] a, int fromIndex, int toIndex) 对数组在指定范围内升序排序

import java.util.Arrays;                            //导入Java.util.Arrays类

public class Taxis {
	public static void main(String[]args) {
		int arr[]=new int[] {2,3,7,6,4,9,0,1,8,5};  //声明数组
		Arrays.sort(arr,arr.length/2,arr.length);   //对数组后半部分进行排序
		for(int i=0;i<arr.length;i++) {             //输出数组
			System.out.print(arr[i]+" ");
		}
	}

}

Output:2 3 7 6 4 0 1 5 8 9 

3. Arrays.sort(T[] a, Comparator<? super T> c) 根据指定的比较器引发的顺序对指定的对象数组进行排序。

降序排序-
使用sort()方法默认是进行升序排序的,如果我们想要进行降序排序时我们应该怎么做呢?这时候需要我们去实现Comparator接口来自定义比较方法。

import java.util.Arrays;
import java.util.Comparator;

public static void main(String[]args) {
	Integer arr[]=new Integer[] {2,3,7,6,4,9,0,1,8,5};
	
	//通过匿名内部类的方式实现Comparator接口 
	Arrays.sort(arr, new Comparator<Integer>() {          
		@Override
		//该方法用来比较两数的大小,返回结果的正负进行排序,这里如果采用arr2 - arr1则实现降序排序	
		public int compare(Integer arr1, Integer arr2) {  
			return arr2 - arr1;
		}
       });

	for(int i=0;i<arr.length;i++) {
		System.out.print(arr[i]+" ");
	}

}

Output: 9 8 7 6 5 4 3 2 1 0 

由于我们可以自定义比较器,所以我们进行比较的数据并不局限于基本的数据类型,对于数组、各种类也同样适用。

比较二维数组的第一个数

import java.util.Arrays;
import java.util.Comparator;

public class Taxis {
	
	public static void main(String[]args) {
		int [][]arrs=new int[][] {                         //创建二维数组
				{2,3,7},
				{6,4,9},
				{1,8,5}
				};
			
		Arrays.sort(arrs, new Comparator<int[]>() {       //定义比较方式:对数组每行的第一个数进行比较
            public int compare(int[] arrs1, int[] arrs2) {
                return arrs1[0] - arrs2[0];
            }
        });

		for(int i=0;i<arrs.length;i++) {                  //输出结果
			for(int j=0;j<arrs[0].length;j++) {
				System.out.print(arrs[i][j]+" ");	
			}
			System.out.println();
		}
	}

}
Output:
	1 8 5 
	2 3 7 
	6 4 9 

按照一定方式对类进行比较:

import java.util.Arrays;
import java.util.Comparator;

class Circle{           //自定义Circle类
	double r;
	public Circle(double r) {
		this.r=r;
	}
	public double area() {
		return 3.14*r*r;
	}	
}

class AreaComparator implements Comparator<Circle> { //自定义AreaComparator类实现Comparator接口

	@Override
	public int compare(Circle c1, Circle c2) {       //按照圆的面积进行升序排序
		return (c1.area()-c2.area())>=0?1:-1;
	}

}
public class Taxis {
	
	public static void main(String[]args) {
		Circle c1=new Circle(5);
		Circle c2=new Circle(1);
		Circle c3=new Circle(2);
				
		Circle[] c_arr= {c1,c2,c3};                 //定义Circle数组

		Arrays.sort(c_arr, new AreaComparator());   //按照圆的面积进行比较
		
		for(int i=0;i<c_arr.length;i++) {           //输出结果
			System.out.println(c_arr[i].area()+" ");
		}
	}
	
}

更多项目资讯获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值