java数组排序——通过java.util.Arrays的方法。

 最简单的数组排序,不用自己写逻辑,一个方法搞定,使用 java.util.Arrays 的方法。

1、通过 Arrays.sort(数组或者 Arrays.parallelSort(数组) 给数组正序排序(后者jdk1.8新增方法,数据量大使用更稳定)。

2、通过 Arrays.sort(数组,起始位置,结束位置或者 Arrays.parallelSort(数组,起始位置,结束位置) 给数组指定位置正序排序(后者jdk1.8新增方法,数据量大使用更稳定)。

3、通过 Arrays.sort(引用类型数组 , Collections.reverseOrder()
     或者 Arrays.parallelSort(引用类型数组 , Collections.reverseOrder()) 给数组倒序排序。(后者jdk1.8新增方法,数据量大使用更稳定)。 

测试代码和注释:

1、数组正序排序:

import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;

public class demo1 {
	/**
	 * 1、将数组正序排序(如int类型,从小到大排序)。
	 * 使用Java的Arrays类sort()或者  Arrays.parallelSort();方法,更方便快捷。
	 */
	@Test
	public void test1(){
		/**
		 * 方法1、Arrays.sort(int[] a)  
		 * 或者 jdk1.8新增方法:  Arrays.parallelSort(int[] a);
		 * 比较:后者相比前者更稳定。
		 * 这种形式是对一个数组的所有元素正序排序。
		 */
		int[] arr = {-1,-2,1,2,9,8,7,-3,0};
		//Arrays.sort(arr);		//对arr数组所有元素正序排序。
		Arrays.parallelSort(arr);	//对arr数组所有元素正序排序。jdk1.8新增方法,相比Arrays.sort(arr)更稳定。
		
		String str = Arrays.toString(arr);  //将数组转换成Sring字符串,方便打印查看。
		System.out.println("结果1:"+str);    //结果:[-3, -2, -1, 0, 1, 2, 7, 8, 9]
		
		/*------------------------------分割线-----------------------------------------*/
		
		/**
		 * 方法2、Arrays.sort(int[] a, int fromIndex, int toIndex)
		 * 或者jdk1.8新增方法:Arrays.parallelSort(int[] a, int fromIndex, int toIndex)
		 * 比较:后者相比前者更稳定。
		 * 这种形式是对数组指定角标排序,也就是对数组a的角标从‘fromIndex’到‘toIndex’的元素排序。
		 */
		int[] arr2 = {-1,-2,1,2,9,8,7,-3,0};
		//Arrays.sort(arr2,2,7);		//将int数组从角标第2位开始到第7位(不包含第7位)从小到大排序。
		Arrays.parallelSort(arr2,2,7);	//将int数组从角标第2位开始到第7位(不包含第7位)从小到大排序。java1.8新增方法,后者相比前者更稳定。
		
		String str2 = Arrays.toString(arr2);//将数组转换成Sring字符串,方便打印查看。
		System.out.println("结果2:"+str2);	//结果2:[-1, -2, 1, 2, 7, 8, 9, -3, 0]
	}	
}

2、数组倒序排序:

import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;

public class demo2 {
		/**
	 * 2、将数组倒序排序(如int类型,从大到小排序)。
	 * 最简单方法:直接在sort方法或者parallelSort方法中传入java中提供的逆序比较器,Collections.reverseOrder();
	 * API的解释:
		返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
		(自然顺序是通过对象自身的 compareTo 方法强行排序的。)
		此方法允许使用单个语句,以逆自然顺序对实现了 Comparable 接口的对象 collection(或数组)进行排序(或维护)
	 */
	@Test
	public void test2(){
		Integer[] arr = {-1,-2,1,2,9,8,7,-3,0};
		String[] b = {"ac","b","d","a"};
		
		/**
		 * 注意:使用java中提供的逆序比较器 Collections.reverseOrder()给数组排序,定义数组必须是引用类型。
		 */
		
		//Arrays.sort(arr,Collections.reverseOrder());	//Integer数组 arr,倒序
		//Arrays.sort(b,Collections.reverseOrder());	//String 数组 b,倒序。

		Arrays.parallelSort(arr,Collections.reverseOrder());	//Integer数组 arr,倒序
		Arrays.parallelSort(b,Collections.reverseOrder());	//String 数组 b,倒序。
		
		String str = Arrays.toString(arr);		//将数组转换成Sring字符串,方便打印查看。
		System.out.println("Integer结果:"+str);    	//Integer结果:[9, 8, 7, 2, 1, 0, -1, -2, -3]
		String br = Arrays.toString(b);			//将数组转换成Sring字符串,方便打印查看。
		System.out.println("String结果:"+br);		//String结果:[d, b, ac, a]
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值