当前位置: 首页 > 知识库问答 >
问题:

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

闻人杰
2023-03-14

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

我需要它具有的特定品质是:

  1. 获取(索引)
  2. 删除最初在超过限制时添加的一定数量的条目。(LIFO)

我尝试使用 ArrayList,但删除操作为 o(n),对于 linkedList,遍历或 get() 操作将为 o(n)。

我还有哪些其他选择?

共有2个答案

督嘉言
2023-03-14

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

因为它也是一个HashSet,所以如果在< code>equals()上匹配,搜索(相对于扫描)可以是O(1)

你可以看看这个问题和这个。

皮自明
2023-03-14

循环缓冲区 - 通过引擎盖下的数组实现的缓冲区。

 类似资料:
  • 我刚刚进行了一次软件面试。其中一个问题是以高度优化的方式使用三种方法(插入、删除和获取随机)设计任何数据结构。面试官让我考虑一种数据结构的组合来设计一个新的数据结构。插入可以设计任何方式,但随机和删除我需要得到具体元素的位置。他给了我一个提示,让我考虑一下需要最少时间进行排序的数据结构。 欢迎任何回答或讨论。。。。

  • 本文向大家介绍高效快速地删除 mysql 重复数据,包括了高效快速地删除 mysql 重复数据的使用技巧和注意事项,需要的朋友参考一下 MYSQL数据库中单表有几百万数据,使用几种delete方法删除重复的数据耗时比较长,运行语句,半天出不来,甚至出现服务器内部错误。 mysql 给表添加唯一索引 完成重复记录删除 不希望数据表中有重复记录的时候我们可以给表添加一个联合唯一索引 例如,user表中

  • 问题内容: 我有一个包含分层数据的表。 列“ ParentId”保存其父级的ID(“ ID”-关键列)。 删除一行时,我要删除所有子级(所有级别的嵌套)。 怎么做? 谢谢 问题答案: 当行数不太大时,erikkallen的递归方法起作用。 这是使用临时表收集所有子项的替代方法: 它从带有@delete_id的行开始,然后从那里开始。where语句用于防止递归;如果您确定没有任何内容,则可以将其忽略

  • 主要内容:引子,一、索引,二、mysql中索引的数据结构,三、源码,五、总结引子 说几句题外话,在京被困三个月之久,不能回家,所以这个源码分析就中断了。之所以在家搞这个数据库的源码分析,主要是在家环境齐全,公司的电脑老旧不堪。意外事件往往打断正常的习惯和运行轨迹,但这却是正常现象。回来也有两周,从本周开始恢复这个源码分析的系列。 大德久远,有始有终! 一、索引 什么是索引?索引有什么作用?还记得上小学时,老是教使用字典么?如果一个字不认识或者知道读音但字儿不会写都可以通过

  • 我有一组不相交的整数区间,想检查给定的整数是否位于其中一个区间。当然,这可以通过对数时间内的二进制搜索来实现。然而,绝大多数查询返回false,即任何时间间隔内只有很少的整数。为了加快应用程序的速度,我正在寻找一种概率的、恒定时间的算法(某种哈希函数),它可以告诉我给定的整数是绝对不是,还是可能在某个区间内。下面是预期算法的草图,其中使用存储在树中的间隔初始化magic\u data\u结构: 对

  • 我正在设计一个新的数据环境,目前正在开发我的概念证明。在这里,我使用以下架构:Azure函数- 我目前正在努力解决的是如何优化“数据检索”的想法,以便在Azure Databricks上支持我的ETL过程。 我正在处理事务性工厂数据,这些数据通过前面的通道按分钟提交给Azure blob存储。因此,我每天都有86000个文件需要处理。事实上,这需要处理大量的独立文件。目前,我使用下面这段代码来构建