java列表实现 3 月,1 周 Questions & Answers 694 我有以下用例: 包含具有各种属性(例如名称、类型、日期)的对象的列表 列表可以包含很多元素(50k-200k) 我想问,鉴于我需要在列表上执行以下操作,对于这种情况,什么是最好的列表实现 顺序-例如按类型(字母顺序) 筛选-例如,按日期 没有插入 子列表-类似于分页李> 谢谢
# 1 楼答案 java.util.ArrayList在这种情况下似乎最好(由向量支持)。您需要提前做的一件事是在构建实例时保留足够的空间(最好是在构建前知道元素的数量),以避免在调整大小的向量分配时复制 与LinkedList相比,另一个优势是缺少节间引用,这使得所需的堆大小比ArrayList减少了大约两倍 附加:O(1)(没有插入) 排序=排序:O(n*log(n)) 过滤:O(n) 子列表:O(1)
# 1 楼答案
java.util.ArrayList
在这种情况下似乎最好(由向量支持)。您需要提前做的一件事是在构建实例时保留足够的空间(最好是在构建前知道元素的数量),以避免在调整大小的向量分配时复制与
LinkedList
相比,另一个优势是缺少节间引用,这使得所需的堆大小比ArrayList
减少了大约两倍# 2 楼答案
如果您事先知道列表的大小(或上限),并且可以保证不插入,那么您需要使用ArrayList
它由阵列备份,因此查找速度很快
# 3 楼答案
单个集合类型不能满足所有这些用例。我能看到的最近的一个是TreeSet