【发布时间】:2017-10-20 11:21:50
【问题描述】:
我有一个问题,在开始时在列表中使用了许多插入,然后搜索和检索操作被广泛使用,那么哪种方法是好的和有效的?
方法 1: 使用 LinkedList 作为整个程序的数据结构。
方法 2: 使用 ArrayList 作为整个程序的数据结构。
方法 3: 在开头使用LinkedList 作为我的数据结构进行插入并执行
Arraylist al = new Arraylist(ll);
用于检索操作。
改变数据结构的成本是多少?真的值得吗?
【问题讨论】:
-
将链接列表转换为数组列表是 O(n)。如果这对您的情况有意义,那么这样做是完全合理的。但是除非你知道你有效率问题,否则你可能会使用一个数组列表来处理整个事情。
-
一般来说,如果一个列表被多次读取,最好选择ArrayList,因为它提供随机访问。另一方面,如果元素被多次添加到列表中(在随机位置),那么最好使用 LinkedList。
-
@khelwood
ArrayList怎么样?它依赖于System.arraycopy,这是一个原生方法,所以我想它应该更快和优化? -
@BackSlash Faster 用于哪些操作?针对什么进行了优化?
-
一种可行的方法 #4 可能是附加到 ArrayList 并在执行检索之前对其进行排序。
标签: java arraylist linked-list