簡體   English   中英

為什么Arrays.sort()不能按降序排序原始類型數組?

[英]why Arrays.sort() can't sort primitive type array in descending order?

我們知道,以下代碼可以工作:

Integer[] arr = new Integer[len];
Arrays.sort(arr, (a,b) -> (b - a));

但是為什么我們不能用int []做這個,為什么java不允許這個?

查看您嘗試使用的Arrays#sort方法的簽名

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

其中<T>要在Array中排序的對象的類。 Primitive int不能是轉換類。

這是因為,順序誘導排序方法sort(T[] a, Comparator<? super T> c)方法使用比較器。 由於無法使用基本類型對Comparator <>進行參數化,因此必須將此方法與對象一起使用。 就像在Map中一樣,我們不能聲明Map<int, boolean>

我認為答案與相同 - 語言設計者可能已經得出結論認為它太多了,因為為所有原語創建方法會拖延創建相應的比較器類的需要,這可能是除了在這種情況下,在任何地方都沒用。

因此,可以按升序對數組進行排序,然后使用Apache Commons Lang反轉其元素:

int[] arr = ...
Arrays.sort(arr);
ArrayUtils.reverse(arr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM