java列表插入效率
我必须对一个大列表进行排序(超过10000个元素)。在添加元素时,我必须将其插入正确的位置。我看到一个ArrayList
将移动插入点之后的所有元素
在这种情况下,List
接口的所有不同实现是如何工作的?在选择一种实现而不是另一种实现时,优点和缺点是什么
你可以在下面搜索框中键入要查询的问题!
我必须对一个大列表进行排序(超过10000个元素)。在添加元素时,我必须将其插入正确的位置。我看到一个ArrayList
将移动插入点之后的所有元素
在这种情况下,List
接口的所有不同实现是如何工作的?在选择一种实现而不是另一种实现时,优点和缺点是什么
# 1 楼答案
可能是重复的,但我会给你一个提示
要对数据进行排序,可以使用:
方法,它无论如何都会将列表转换为数组,所以您不必太在意列表实现的类型。它只需要在对象中实现接口
# 2 楼答案
List
的两个主要实现是ArrayList和LinkedList。还有一些,但它们通常用于特殊情况ArrayList
可以通过索引非常快速地访问,因为它由一个数组支持——您只需要array[i]
——但是修改列表需要移动很多底层数组,所以效率不高使用
LinkedList
可以非常有效地添加/删除项目,但查找第n
个条目的速度很慢,因为它必须从开头开始,遍历列表计数节点,直到到达所需的位置# 3 楼答案
您的数据是否包含重复项
如果没有,可以使用
TreeSet<?>
如果是,可以使用
TreeMap<?, Integer>
,其中整数是每项的计数