1.問題的產生:基本數據類型數組無法使用Comparator函數式接口,進行倒序排序
int[] nums=new int[]{2,12,341,11,1}; Arrays.sort(nums,(a,b)->b-a); //該語句會報錯
原因:sort(T[] a, Comparator<? super T> c)
int[]不是T[](Integer[]將是),無法使用Comparator函數式接口。
2.解決方法:
(1)先升序后反轉數組
Arrays.sort(nums); for(int i=0;i<nums.length/2;i++){ int temp=nums[i]; nums[i]=nums[nums.length-1-i]; nums[nums.length-1-i]=temp; }
(2)將nums轉換為Integer數組,再調用該方法
Integer[] newNums=Arrays.stream(nums).boxed().toArray(Integer[]::new); Arrays.sort(newNums,(a,b)->b-a);