最简单的数组排序,不用自己写逻辑,一个方法搞定,使用 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]
}
}