【发布时间】:2015-12-02 06:16:28
【问题描述】:
我有一个小问题。
比如我有ArrayList
ArrayList<Double> Temp1 = new ArrayList<>();
大小 = 5 (0, 1, 2, 3, 4)。我需要移动数据 当新值出现时删除一个值。例如,当 Temp1.add(5) 我必须得到一个结果 (1, 2, 3, 4, 5)。不使用循环可以吗?
因为在我的应用程序中,我有非常大的 ArrayList(1000-15000 个元素),它从连接的设备以每秒 5-10 个项目填充。当我使用“for”循环检索最后 50 个项目时,我失去了工作效率并每秒从设备接收 1-2 个项目。
【问题讨论】:
-
可以切换到LinkedList吗?
-
可以使用这个函数替换:list.set(your_index, your_item);
-
尺寸是固定的吗?如果是这样,您可以使用固定大小的数组,以及
start和end索引来实现循环数组。它会比LinkedList 更有效(如果大小是固定的)。见en.wikipedia.org/wiki/Circular_buffer、youtube.com/watch?v=z3R9-DkVtds -
@Nyavro,谢谢。我以前没用过。我会努力的!