【问题标题】:Adding data to ArrayList with the removal of old将数据添加到 ArrayList 并删除旧的
【发布时间】: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);
  • 尺寸是固定的吗?如果是这样,您可以使用固定大小的数组,以及startend 索引来实现循环数组。它会比LinkedList 更有效(如果大小是固定的)。见en.wikipedia.org/wiki/Circular_bufferyoutube.com/watch?v=z3R9-DkVtds
  • @Nyavro,谢谢。我以前没用过。我会努力的!

标签: java android arraylist


【解决方案1】:

正如@Nyavro 在他的评论中提到的,您可以使用实现Queue 接口的LinkedList。只需将新元素添加到尾部,然后弹出头部即可。

List<Double> temp1 = new LinkedList<>();
temp1.add(5);
temp1.removeFirst();

【讨论】:

    【解决方案2】:

    您可以使用set 函数来替换某些值,例如,您需要从 Arraylist 中删除 1 并将其更改为 100 然后这样做

    Temp1.set(1,100);
    

    这里 1 是索引,100 是值。

    【讨论】:

      【解决方案3】:

      你总是想删除第一个元素吗,对。那么你可以试试这个, 当你想添加新值时,先使用删除,

      Temp1.remove(0);
      

      【讨论】:

        【解决方案4】:

        来自a duplicate questionthis correct answer,这是您可以使用的数据结构列表:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 1970-01-01
          • 2011-01-30
          • 1970-01-01
          • 2018-03-14
          • 2021-10-07
          相关资源
          最近更新 更多