亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按降序對基本類型的數組進行排序

按降序對基本類型的數組進行排序

慕絲7291255 2019-12-15 16:12:36
我有很多原始類型(雙精度)。如何按降序對元素進行排序?不幸的是,Java API不支持使用Comparator對基本類型進行排序。一種解決方法是排序,然后反轉:double[] array = new double[1048576];...Arrays.sort(array);// reverse the arrayfor (int i = 0; i < array.length / 2; i++) {     // swap the elements     double temp = array[i];     array[i] = array[array.length - (i + 1)];     array[array.length - (i + 1)] = temp;}這很慢-特別是在數組已經很好排序的情況下。有什么更好的選擇?
查看完整描述

3 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

Guava具有將原始數組轉換為包裝類型列表的方法。令人高興的是,這些列表是實時視圖,因此對它們的操作也可以在基礎數組上進行(類似于Arrays.asList(),但對于基元)。


無論如何,這些列表中的每一個都可以傳遞給Collections.reverse():


int[] intArr = { 1, 2, 3, 4, 5 };

float[] floatArr = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f };

double[] doubleArr = { 1.0d, 2.0d, 3.0d, 4.0d, 5.0d };

byte[] byteArr = { 1, 2, 3, 4, 5 };

short[] shortArr = { 1, 2, 3, 4, 5 };

Collections.reverse(Ints.asList(intArr));

Collections.reverse(Floats.asList(floatArr));

Collections.reverse(Doubles.asList(doubleArr));

Collections.reverse(Bytes.asList(byteArr));

Collections.reverse(Shorts.asList(shortArr));

System.out.println(Arrays.toString(intArr));

System.out.println(Arrays.toString(floatArr));

System.out.println(Arrays.toString(doubleArr));

System.out.println(Arrays.toString(byteArr));

System.out.println(Arrays.toString(shortArr));

輸出:


并[5,4,3,2,1]

[5.0,4.0,3.0,2.0,1.0]

[5.0,4.0,3.0,2.0,1.0]

[5,4,3,2,1]

[5,4,3 ,2,1]



查看完整回答
反對 回復 2019-12-16
  • 3 回答
  • 0 關注
  • 287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號