我想实现一个非常简单的滑动窗口。换句话说,我将有某种列表,其中包含从该列表的右端插入并从左端删除的对象。在每次插入中,先前的对象都会左移一个索引。当列表被对象填充时,在从右端每次插入时,都会从左端删除一个对象(当然,之前的对象将像往常一样左移一个索引)。
我想到的是 LinkedList 或 ArrayDeque - 可能后者是更好的选择,因为据我所知,对于 ArrayDeque,插入和删除到/从任一端都是持续的努力 O(1),但事实并非如此对于链表。那正确吗?
此外,我想问以下问题:当我插入一个新对象时,左移存储在滑动窗口中的所有先前对象对于像我这样具有 100,000 甚至 1,000,000 个对象的大型滑动窗口来说是处理密集型的。是否有任何其他数据结构可能在我的应用程序中表现更好?
注意:我使用术语“滑动窗口”来表示我想要实现的功能,也许还有其他一些术语可以更好地描述它,但我认为从上面的描述中我想清楚我想要做什么。