gpt4 book ai didi

java - 将新元素放入 arrayList 中,而不是放在其头部

转载 作者:行者123 更新时间:2023-12-02 04:49:47 24 4
gpt4 key购买 nike

我有这个代码:

但是当我尝试添加时

completeRoutingResponses = new ArrayList<>(8); //doesn't this mean there are 8 places in the list which I can put data into?

completeRoutingResponses.add(3, routingResponse1);

completeRoutingResponses.add(2, routingResponse2);

completeRoutingResponses.add(5, routingResponse3);

completeRoutingResponses.add(0, routingResponse4);

列表大小不会更改,并且不会添加项目,

但仅当我添加到下一个头部位置时(按顺序)。

有办法做到这一点吗? (就像在位置 i 处放入数组,但我仍然想使用 ArrayList)

我实际上使用的是多线程代码

但这对于厌倦这个问题并不重要,因为我在 Debug模式下看到 add 被调用了 8 次,但最终列表只有 2 项。

最佳答案

新的ArrayList<>(8);

only 表示列表的初始容量为 8,因此在添加 8 个元素之前,不需要调整其内部缓冲区的大小。

它不会在列表中创建“空”槽,它不是一个数组。

列表仅存储真实元素。

您可以手动向列表中添加 8 个空值,然后调用 set(ix,element) 将项目放置在正确的位置。但您需要先添加 null,否则您将得到异常,因为您将在当前列表内容之外设置元素。

此外,您当前的代码永远不应该完成,因为您会在第一个 add(3,routingResponse1) 之后收到异常,因为它将位于列表内容之外。您提到了多线程,所以您可能很幸运。

关于java - 将新元素放入 arrayList 中,而不是放在其头部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335419/

24 4 0