我知道标题并没有真正说出我实际上在寻找什么,因为很难用几句话来解释。
我正在寻找的是Java的链接列表变体我可以迭代,但它在某种程度上具有固定长度。
你知道,我想跟踪Kerbal Space Program中模拟卫星的地面路径,我从遥测插件中获取数据。但我只想在最后两个小时内显示地面路径。现在整个数据将写入链接列表,但随着时间的推移,列表变得越来越长,最终变得越来越大,以至于需要更长的时间来遍历此列表以获取轨道最后两小时的数据需要一组新的数据。
因此,如果最长和最新条目之间的时间超过两小时任务时间,我正在寻找的链接列表变体将具有一定的固定长度,删除最后一个条目(条目)。因此,我只需要迭代相对较少数量的条目而不是前一个航班的整个数据集(保存它以将其提升为CSV)。
我感谢周围有用的人提供的任何帮助。
答案 0 :(得分:2)
只需维护一个定期修剪LinkedList
结尾的线程。你不需要任何特别的东西。任何Queue
实施都可能有效; ArrayDeque
可能是最好的。
那,或者使用包装LinkedList
实现来装饰Queue
,该实现会丢弃太旧的元素。
答案 1 :(得分:1)
我建议使用Louis Wasserman建议的队列。但您可能想要考虑的另一种可能性是circular linked list。
这是我描述问题时第一个出现在我脑海中的数据结构,我认为它最适合自然。不幸的是,我不知道Java提供的任何原生循环链表实现,所以你必须实现自己的或使用第三方代码,如果你这样做...
答案 2 :(得分:0)
我建议包装几乎所有的列表实现,当你添加到列表中时,将你刚刚添加的元素与列表中的最后一个元素进行比较,如果时间差大于两个小时,则删除最后一个元素。