欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于Arrays.sort()使用的注意事項

 更新時間:2022年05月12日 14:26:03   作者:ZSYL  
這篇文章主要介紹了關于Arrays.sort()使用的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Arrays.sort()使用注意事項

Java中的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型

  • int:是基本數(shù)據(jù)類型,Integer 是引用數(shù)據(jù)類型
  • Ingeter:是 int 的包裝類,int 的初值為 0,Ingeter的初值為null。

初始化

int num = 1;
Integer num = new Integer(1);

有了自動裝箱和拆箱,使得對Integer類也可使用:Integer num = 1;

自動裝箱和拆箱

從Java5.0版本以后加入了autoboxing功能;自動“拆箱”和“裝箱”是依靠JDK5的編譯器在編譯期的“預處理工作”。

自動裝箱:將基本數(shù)據(jù)類型封裝為對象類型,成為一個對象以后就可以調用對象所聲明的所有的方法。

Arrays.sort()平時經常用到:有兩種方式

第一種:將數(shù)組元素倒序

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

array 必須為 包裝類對象

第二種:將數(shù)組元素升序or降序

1.重寫比較器 默認是升序 

List itemArrays.sort(y,new Comparator<Integer>(){
?? ?@Override
?? ?public int compare(Integer o1, Integer o2) {
?? ??? ?return o2-o1; ?// 反過來是升序
?? ?}
});

2.使用lambada表達式進行代碼簡化

Arrays.sort(array, (o1, o2) -> o2-o1);

在實際應用中我們往往使用 基本數(shù)據(jù)類型 數(shù)組,這時候若使用sort() 就需要將基本數(shù)據(jù)類型轉化為引用數(shù)據(jù)類型,否則便會報錯

sort() 方法源碼:

public static <T> void sort(T[] a, Comparator<? super T> c) {
? ?...
?}

因此需要將 int[] 類型數(shù)組包裝為 Integer[] 數(shù)組

// int數(shù)組轉為Integer
// 將int數(shù)組轉換為Integer數(shù)組
?int[] nums = {1,2,3};
?// 先將int數(shù)組轉換為數(shù)值流
?IntStream stream = Arrays.stream(nums);
?// 流中的元素全部裝箱,轉換為流 ---->int轉為Integer
?Stream<Integer> integerStream = stream.boxed();
?// 將流轉換為數(shù)組
?Integer[] integers = integerStream.toArray(Integer[]::new);

最后排序完,需要轉化回int[]數(shù)組

Arrays.stream(integers).mapToInt(Integer::valueOf).toArray();

Arrays.sort()降序排列問題

今天對int[ ]使用Arrays.sort()時想使用降序排列,上網一搜都是

Arrays.sort(int[ ], Collections.reverseOrder());

經過使用發(fā)現(xiàn),并不能使用。

int[] a={5,7,2,6,8,1,4};
Arrays.sort(a);//a: 1 2 4 5 6 7 8
Arrays.sort(a, Collections.reverseOrder);//報錯

后來經過搜索研究發(fā)現(xiàn),此方法支持Object對象

Arrays.sort(Object[ ], Collections.reverseOrder());
Object[] a={5,7,2,6,8,1,4};
Arrays.sort(a);//a: 1 2 4 5 6 7 8
Arrays.sort(a, Collections.reverseOrder());//成功

也可以使用再新建一個同樣大小數(shù)組,從后往前一一賦值

int[] a = {5, 7, 2, 6, 8, 1, 4};
Arrays.sort(a);//a: 1 2 4 5 6 7 8
int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) {//b: 8 7 6 5 4 2 1
?? ?b[i] = a[a.length - i - 1];
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論