有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java列表实现

我有以下用例:

  • 包含具有各种属性(例如名称、类型、日期)的对象的列表
  • 列表可以包含很多元素(50k-200k)

我想问,鉴于我需要在列表上执行以下操作,对于这种情况,什么是最好的列表实现

  • 顺序-例如按类型(字母顺序)
  • 筛选-例如,按日期
  • 没有插入
  • 子列表-类似于分页

谢谢


共 (3) 个答案

  1. # 1 楼答案

    java.util.ArrayList在这种情况下似乎最好(由向量支持)。您需要提前做的一件事是在构建实例时保留足够的空间(最好是在构建前知道元素的数量),以避免在调整大小的向量分配时复制

    LinkedList相比,另一个优势是缺少节间引用,这使得所需的堆大小比ArrayList减少了大约两倍

    • 附加:O(1)(没有插入)
    • 排序=排序:O(n*log(n))
    • 过滤:O(n)
    • 子列表:O(1)
  2. # 2 楼答案

    如果您事先知道列表的大小(或上限),并且可以保证不插入,那么您需要使用ArrayList

    它由阵列备份,因此查找速度很快

  3. # 3 楼答案

    单个集合类型不能满足所有这些用例。我能看到的最近的一个是TreeSet

    • 顺序-实现对象以基于类型重写equals和hascode
    • 子列表-耳机、尾套件
    • 过滤-滚动你的赢