首页 > 解决方案 > 将数组元素列表保持在特定状态

问题描述

我有很多元素。这是一个嵌入式平台,每个周期我都需要对所有设置了标志的元素进行操作。

任何时候只有少数元素设置了标志。由于性能原因,我无法运行整个阵列。

我意识到一种解决方案可能是构建具有标志集的元素的数组索引列表,并遍历该列表而不是整个数组。然后,每次设置/重置标志时都会更新此列表。

我猜这是一个古老且“已解决”的问题,但我缺少正确描述它的词汇。这个问题的最佳实践是什么,它叫什么?

谢谢

标签: arraysindexinglookup

解决方案


你要找的词是一个集合。您将标记的那些保留在某种子组(您称之为列表)中是正确的,但是列表是有序的。您不需要这种排序功能来存储一堆标记的元素;你想要一个集合,它是数组中所有元素的子集。

不让它们排序会给您带来性能优势,特别是在删除时,因为您不必移动列表中您删除的元素之后的所有元素。同样在随机位置访问中,如果您使用 HashSet,您将拥有恒定的时间。在一个有点“坏”的方面,遍历一个集合对象通常比一个列表更不直观,这让你使用一个 Iterator 对象。


推荐阅读