删除和检索信息的高效java数据结构?

删除和检索信息的高效java数据结构?,java,data-structures,Java,Data Structures,我需要一个可以添加字符串的数据结构。这个数据结构非常大 我需要它具备的具体品质是: 获取(索引) 删除超过限制时最初添加的一定数量的条目。(后进先出) 我尝试使用ArrayList,但删除操作是o(n),对于linkedList,遍历或get()操作将是o(n) 我还有什么其他选择?-一个是在引擎盖下用数组实现的。-一个是在引擎盖下用数组实现的。LinkedHashSet可能会引起兴趣。它实际上是一个HashSet,但它还维护一个LinkedList,以允许可预测的迭代顺序,因此也可以用作FIF

我需要一个可以添加字符串的数据结构。这个数据结构非常大

我需要它具备的具体品质是:

  • 获取(索引)
  • 删除超过限制时最初添加的一定数量的条目。(后进先出)
  • 我尝试使用ArrayList,但删除操作是o(n),对于linkedList,遍历或get()操作将是o(n)


    我还有什么其他选择?

    -一个是在引擎盖下用数组实现的。

    -一个是在引擎盖下用数组实现的。

    LinkedHashSet可能会引起兴趣。它实际上是一个HashSet,但它还维护一个LinkedList,以允许可预测的迭代顺序,因此也可以用作FIFO队列,具有不包含重复条目的额外好处

    因为它也是一个哈希集,所以如果搜索(与扫描相反)可以在
    equals()上匹配,则搜索可以是O(1)


    你们也可以看看这个问题。

    LinkedHashSet可能会引起你们的兴趣。它实际上是一个HashSet,但它还维护一个LinkedList,以允许可预测的迭代顺序,因此也可以用作FIFO队列,具有不包含重复条目的额外好处

    因为它也是一个哈希集,所以如果搜索(与扫描相反)可以在
    equals()上匹配,则搜索可以是O(1)


    您也可以看看这个问题。

    定义“非常大”…?我不知道Java中已有任何东西可以做到这一点。虽然我没有彻底搜索所有队列变量。LinkedList有一个
    get(index)
    操作符,加上前后的排队/退队。字符串在50000-80000之间。它也有增长的潜力。定义“非常大”…?我不知道Java中已有的任何东西可以做到这一点。虽然我没有彻底搜索所有队列变量。LinkedList有一个
    get(index)
    操作符,加上前后的排队/退队。字符串在50000-80000之间。它也有增长的潜力。我不太熟悉循环缓冲区。它会保持元素插入的顺序吗?是的。get(index)是O(1),delete也是,但是,您只能删除最早(或最新)的条目。通常为阵列支持的实现指定最大大小,如果新条目会使缓冲区溢出,则在添加新条目时,它会自动删除最旧的条目。我对循环缓冲区不太熟悉。它会保持插入元素的顺序吗?是的。get(index)是O(1),delete也是,但是,您只能删除最早(或最新)的条目。通常为阵列支持的实现指定最大大小,如果新条目会使缓冲区溢出,则在添加新条目时会自动删除最旧的条目。