我一直在瀏覽java.util.Arrays的源代碼,並在排序時總是指數組的長度(對於ArrayList,我假設它指的是E []數據(瞬態)字段的長度 但是實際上不應該指大小字段,因爲它們並不總是相等。java.util.Arrays如何處理ArrayList(長度和大小)?
0
A
回答
0
在Collections
找到答案,它調用toArray()
,它返回一個長度相等的ArrayList數組Arrays
排序的副本和Collections
用來排序實際的ArrayList。
1
當排序它總是指的是長度h的陣列
不,它不。對於每種數據類型都有一個Arrays.sort
過載,它接受fromIndex
和toIndex
參數,指定要排序的數組的確切部分,例如Arrays.sort(Object[] a, int fromIndex, int toIndex, Comparator<? super T> c)
。
即通過ArrayList.sort
調用的方法:
public void sort(Comparator<? super E> c) {
final int expectedModCount = modCount;
Arrays.sort((E[]) elementData, 0, size, c);
if (modCount != expectedModCount) {
throw new ConcurrentModificationException();
}
modCount++;
}
的ArrayList
直接通過它自己的size
變量的排序方法。
對於List
其不會覆蓋its sort
method,所述default implementation第一轉儲內容到一個臨時數組和排序是:
默認實現得到一個包含在該列表中的所有元素的數組,排序陣列,並遍歷該列表,重置陣列中相應位置的每個元素。 (這避免了會導致試圖排序代替鏈表N2的log(n)性能。)
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
用Java 8開始,舊的方法Collections.sort(list)
只是調用list.sort(null)
。
+0
已經找到答案,但你的答案更清楚。 –
相關問題
- 1. 最小和最大強度長度
- 2. 用戶輸入最大長度處理
- 3. 如何處理大圖像大小?
- 4. ArrayList長度
- 5. 如何找到最大處理器隊列長度?
- 6. 使用arraylist處理巨大的數據大小
- 7. 處理視圖大小編程高度,寬度和邊距
- 8. SQL表的大小/長度和類型
- 9. 最小長度和最大長度的jQuery條件驗證
- 10. 如何處理ArrayList的ArrayIndexOutOfBoundsException
- 11. printf動態長度/大小
- 12. 修復QString大小(長度)
- 13. 大小,長度轉換?
- 14. MaskedTextBox最小/最大長度
- 15. ArrayList效率和大小
- 16. 如何在RemoteInput中指定最小和/或最大長度
- 17. 如何處理列寬度大小調整事件
- 18. Portlet大小處理
- 19. 批處理:標籤長度
- 20. Facebook如何處理圖像大小
- 21. 如何處理R上的RAM大小
- 22. 如何處理JavaFX節點大小?
- 23. 如何計算JSP中Arraylist的長度?
- 24. 迭代和處理ArrayList
- 25. 如何處理最大遞歸深度?
- 26. 在iOS中處理屏幕密度和大小
- 27. 最大經緯度,最小緯度,最大長度,最小長度從幾何字段
- 28. 如何處理極長的LSTM序列長度?
- 29. 指定大小,最大長度爲Html.TextBoxFor
- 30. Chartjs處理大大小小的值
正如你已經在挖掘該源,爲什麼不發佈一些呢?有不止一個版本的JDK,所以誰知道我們都會查看你偷看的源代碼?! – GhostCat
'Arrays'與排序'ArrayList'無關,你在考慮'Collections'嗎? –