如果我有一个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