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

Java数据结构,用于优化获取和迭代

杭涵映
2023-03-14

我需要一个数据结构来在Log N time中执行get/find,并从get操作返回的对象开始迭代。迭代器应该按照元素插入数据结构的相同顺序进行迭代。

我可以使用TreeSet实现这一点吗?或任何其他数据结构?

谢谢

共有3个答案

云啸
2023-03-14

如果您使用的是Java6,那么您可以查看ContoptSkipListSet和ContoptSkipListMap。

穆飞龙
2023-03-14

如果您从SortedMap开始

如果你需要通过一个键(或者可能通过对象本身)找到一个对象的位置,那么引入另一个< code>WeakHashMap

归松
2023-03-14

此答案假设您希望按值获取/查找项,而不是按插入序列号进行访问。我假设这个值与项目的插入顺序完全无关。

标准Java基础类中最接近的是LinkedHashSet。这允许按插入顺序进行快速搜索和迭代。但它并没有提供从给定位置开始的迭代器,因此您必须自己实现它。基于<code>LinkedHashSet</code>或使用您自己的set实现。我想最简单的方法是使用<code>哈希集

 类似资料:
  • 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合 7.4.8. MySQL如何计算打开的表 7.4.9. MySQL如何打开和关闭表 7.4.10. 在同一个数据库中创建多个表的缺陷 7.4.1. 设计选择 MySQL将行数据和索

  • 我使用spark 2.2.1,kafka_2.12-1.0.0和scala从kafka获取一些json数据,但是,我只连接了kafka,没有数据输出。 这里是我的scala代码: 这是我的绒球.xml 我运行这段代码,控制台没有显示任何来自kafka的数据。 这里是控制台输出: 输出只是说我的消费者群体已经死亡。我的kafka运行良好,我可以使用控制台命令从“行为”主题中获取数据。总之,Kafka

  • 本文向大家介绍结构化,半结构化和非结构化数据之间的差异,包括了结构化,半结构化和非结构化数据之间的差异的使用技巧和注意事项,需要的朋友参考一下 在大数据方面,我们知道它处理大量数据及其执行。简而言之,我们可以说大数据是一种处理大量数据的事物,并且由于数据量如此之大,因此从广义上讲,根据数据的组织方式定义了三类,即结构化,半结构化和非结构化数据。 现在,根据组织数据的级别,我们可以发现这三种类型的数

  • Boost.Any Any库支持类型安全地存储和获取任意类型的值。当你需要一个可变的类型时,有三种可能的解决方案: 无限制的类型,如 void*. 这种方法不可能是类型安全的,应该象逃避灾难一样避免它。 可变的类型,即支持多种类型的存储和获取的类型。 支持转换的类型,如字符串类型与整数类型之间的转换。 Any实现了第二种方案,一个基于值的可变化的类型,无限可能的类型。这个库通常用于把不同类型的东西

  • 我最近被要求构建一个支持四种操作的数据结构,即, 推送:向DS添加元素 元素是整数。 以下是我建议的解决方案: 拿一堆 在其中存储一对元素。这对应该是(element,max_so_far),其中element是该索引处的元素,max_so_far是迄今为止看到的最大值元素 将元素推入堆栈时,请检查最顶层堆栈元素的max\u so\u far。如果当前数大于该值,则将当前对的max\u so\u

  • 我是一个lisp初学者,我试图编写一个包,为trie定义一个类,并在其中读取拼字词典的全部内容。该结构充当一个节点,每个节点都有一个关联列表,该列表跟踪来自它的字母(导致其他子区)。 下面是我的类代码 这是我的添加单词函数 下面是打开我的文件(拼字字典)并读取每一行的函数 每当我试图加载整个字典时,都会出现堆栈溢出。拼字字典里有100k多个单词,但它在6000个时失败了……我的记忆使用情况出了问题