当前位置: 首页 > 知识库问答 >
问题:

在ArrayList的特定索引处插入对象,而不增加该ArrayList的容量-Java

端木承业
2023-03-14

我有一个ArrayList:

List<Integer> array = new ArrayList<Integer>(M);

在我的代码中的某个时候,我在这个数组列表的特定索引处添加了一个新的整数值:

array.add(index, value);

文件表明,对于该方法

在此列表中的指定位置插入指定元素(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将一个元素添加到其索引中)。

这很好,因为这就是我真正想做的。问题是,每当我这样做时,我的数组的大小都会增加1。也就是说,最初我有一个大小为M的数组,其中填充了零。当我在索引0处添加第一个值时,我在那里有这个值,并且有M个零值,从而生成一个大小为M 1的数组。当我在索引0处添加第二个值时,我在索引0处有这个值,前一个值在索引1处向右移动,并且M个零值,从而生成一个大小为M 2等的数组。

我的问题是,如何在我的arraylist的特定索引处添加一个元素(在我的情况下,在索引0处),将之前的元素移动1个索引,而不超过arraylist的预定义容量?

(我不得不说,ArrayList是Java中最常见的结构之一,也是我最困惑的结构之一……)

编辑:我必须注意,最初我使用for循环用M个零值填充我的arraylist,因此,例如,对于M=5,我有一个这样的arraylist。[0, 0, 0, 0, 0]

共有3个答案

黄景胜
2023-03-14

您必须使用set方法而不是add方法,即数组。集合(索引,值)

滑弘扬
2023-03-14

当您想在arraylist中的特定索引处添加值而不增加其长度时,最好使用arraylist中的set方法。使用ArrayList.set(int index, E元素)

詹正浩
2023-03-14

您可以删除列表的最后一个元素,然后插入。这将保持大小不变

 类似资料:
  • 问题内容: 我认为这是一个非常简单的问题,但我不知道如何正确执行此操作。 我有一个空的arraylist: 我有一些要添加的对象,每个对象必须位于某个位置。但是,有必要可以按每种可能的顺序添加它们。当我尝试此操作时,它不起作用,我得到了: 我曾尝试是填充用,然后做以上。它有效,但是我认为这是一个可怕的解决方案。还有另一种方法吗? 问题答案: 您可以这样做: 将对象2添加到位置2后,它将把对象3移动

  • 当执行进入非Reps.remove行时,删除不是删除指定索引处的对象。为什么? 此解决方案打印:[a, b, c, d, e, f]当它应该是b, d, f时

  • 问题内容: 我有一堂课。它具有以下特征; 它具有2个属性,和。1个人可以拥有许多电话,因此您可能会在下面看到具有多个ID的人。 还有另一门课叫。它将有一个称为的方法。 personList,具有3-4个Person对象。我需要搜索PersonArrayList并找到与Person对象匹配的对象。我怎样才能做到这一点? 注意:我尝试过。但这是行不通的。 问题答案: 我尝试了personList.co

  • 我试图根据用户输入找到一个特定的对象。用户需要输入姓名和性别,然后程序应该搜索ArrayList,查看是否有匹配的姓名和性别。ArrayList中的对象有3个实例变量,但程序只搜索2个。如何在ArrayList中只搜索选定的几个特征? 在我的项目中,我有: 其中,nameList是ArrayList的名称,getName()是返回存储在对象中的名称的方法的名称,getGender()是返回存储在对

  • 问题内容: 假设我有一个大小为n的对象的ArrayList。现在,我想在特定位置插入另一个对象,比方说在索引位置k(大于0且小于n),并且我希望索引位置k或之后的其他对象向前移动一个索引位置。因此,有什么方法可以直接在Java中执行此操作。实际上,我想在添加新对象时保持列表排序。 问题答案: 要 插入 的特定索引,使用值到ArrayList中: 此方法将移动列表的后续元素。但是您不能保证列表会保持

  • 问题内容: 在JDK 1.7中,该方法使用以下表达式来增加ArrayList.java的数组容量:因此,看来新容量几乎比旧容量增加了50%。 但是在很多书中都说容量翻了一番…所以书没有更新或我不太了解? 问题答案: 您的理解是正确的,newCapacity比oldCapacity大50% 在Java 6中,newCapacity计算为 这是Java之类的开源语言的魅力,您可以看到实现-如果它不符合