關于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]; }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中回調函數(shù)?(callback)?及其實際應用場景
在Java中回調函數(shù)(Callback)是一種常見的設計模式,用于實現(xiàn)異步操作或事件處理,這篇文章主要給大家介紹了關于Java中回調函數(shù)?(callback)?及其實際應用場景的相關資料,需要的朋友可以參考下2024-02-02關于Java中String創(chuàng)建的字符串對象內存分配測試問題
這篇文章主要介紹了Java中String創(chuàng)建的字符串對象內存分配測試,給大家詳細介紹了在創(chuàng)建String對象的兩種常用方法比較,通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-07-07java中JDBC實現(xiàn)往MySQL插入百萬級數(shù)據(jù)的實例代碼
這篇文章主要介紹了java中JDBC實現(xiàn)往MySQL插入百萬級數(shù)據(jù)的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-01-01以Spring Boot的方式顯示圖片或下載文件到瀏覽器的示例代碼
這篇文章主要介紹了以Spring Boot的方式顯示圖片或下載文件到瀏覽器的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01