如果我有一個ArrayList
這樣的:如何維護一個ArrayList排序?
ArrayList<Integer> myList = new ArrayList<Integer>();
如果我想繼續它有序,這將是更快地添加到它,然後在每次插入後打電話Collections.sort(myList)
,或簡單地插入到位的元素?
如果我有一個ArrayList
這樣的:如何維護一個ArrayList排序?
ArrayList<Integer> myList = new ArrayList<Integer>();
如果我想繼續它有序,這將是更快地添加到它,然後在每次插入後打電話Collections.sort(myList)
,或簡單地插入到位的元素?
它可能是更有效的利用Collections.binarySearch(list, elementToInsert)
在正確的位置插入,例如:
int index = Collections.binarySearch(list, element);
if (index < 0) index = - (index + 1);
list.add(index, element);
如果您不需要隨機訪問和您的條目是唯一的(這似乎根據您的評論)的情況下,你也可以使用一個TreeSet:
NaivigableSet<User> users = new TreeSet<> (Comparator.comparing(User::getId));
設定將始終本着對用戶ID必須是唯一的排序。
如果您需要詢問每個插入後連續分選,我想你應該嘗試另一種方法比自己當前的一個,因爲這不是時間效率。要詳細解釋可能的解決方案,您必須查看Sorted array list in Java
根據您使用它的方式,['SortedSet'](https://docs.oracle.com/javase/8/docs/api/java/ util/SortedSet.html)? – khelwood
我想有其ID必須是在上升order.Here我爲了不我覺得從smonff回答問題 – andrei985
複雜整數使用,例如用戶的列表(這是一個單獨的類)是一個使最有意義的是:不要在固定的數據結構周圍建立你的接口。相反,選擇那個給你你需要的數據結構;而無需在其周圍建立附加圖層。 – GhostCat