【问题标题】:Java ArrayList replace at specific indexJava ArrayList 在特定索引处替换
【发布时间】:2026-01-21 18:20:03
【问题描述】:

我需要有关此 java 的帮助。我创建了一个灯泡的 ArrayList,我试图用另一个灯泡替换特定索引处的灯泡。那么对于以下标题,我该如何进行呢?

public void replaceBulb(int index, Bulbs theBulb) {

}

【问题讨论】:

  • 对于它的价值,我正在查看“替换”、“放置”或“插入”的列表界面。我没想过要找布景。
  • @GuiSim 列表界面并不长,5分钟就能一口气读完……
  • 我用的是Eclipse的自动补全,没看界面。

标签: java arraylist


【解决方案1】:

您可以使用ArrayList的set方法替换特定位置的项目,如下所示:

list.set( your_index, your_item );

但是元素应该出现在你在 set() 方法中传递的索引处,否则它会抛出异常。

您也可以查看 oracle doc here

【讨论】:

  • @vaxquis 好的先生,请您编写 java 8 并发布它。我们在这里使用它。 ;)。在 SO 中,答案应始终根据问题,因此请先阅读问题。如果它返回以前的值有什么问题,如果你想要那个值那么你可以使用 else 离开它。它正在替换旧值,就是这样。
  • @vaxquis 你以前看过我的评论吗?明确提及的答案应始终根据问题。提出问题的人提到他想替换元素,这意味着他有一个包含元素的数组列表。现在清除先生???
  • @vaxquis 你考虑的事情,新手都会知道,所以这些问题没有任何意义。我仍然编辑让你开心:)
  • 作为新手意味着有人不知道如何正确编码。提供无效代码总是错误的,而且没有任何借口,因为它可以而且通常会给初学者带来困惑。提供正确且自包含的代码示例是 * 的意义所在。感谢您对答案的改进。
【解决方案2】:

让我们将数组列表设为ArrayList,并将新值设为value 您需要做的就是将参数传递给.set 方法。 ArrayList.set(index,value)

前-

ArrayList.set(10,"new value or object")

【讨论】:

    【解决方案3】:

    我们可以使用 ArrayList Set() 方法替换数组列表中的元素。下面是一个示例。

    创建数组列表

     ArrayList<String> arr = new ArrayList<String>();
     arr.add("c");
     arr.add("php");
     arr.add("html");
     arr.add("java");
    

    现在在索引 2 上复制元素

     arr.set(2,"Mysql");
     System.out.println("after replace arrayList is = " + arr);
    

    输出:

     after replace arrayList is = [c, php, Mysql, java]
    

    参考:

    Replace element in ArrayList

    【讨论】:

      【解决方案4】:

      查看List interface中的set(int index, E element)方法

      【讨论】:

      • 你是对的。但你可能会考虑编辑它,因为你的回答导致 set() 方法是静态方法,不是吗?
      • @AndroidKiller 它是静态的 ArrayList.set(); 但是当你在自己的列表中调用它时,它不是:myArrayList.set(int, E);
      • 这个方法的问题是,如果arrayList没有被初始化,它会抛出arrayOutOfBoundException。我想在添加时将一个元素放在正确的索引处,不确定是否有办法做到这一点。
      • @Bionix1441 即使列表已经初始化,仍然可以尝试为不存在的索引设置值。所以你只需要确保你的索引是有效的。
      【解决方案5】:

      使用set() 方法:see doc

      arraylist.set(index,newvalue);
      

      【讨论】:

        【解决方案6】:
        public void setItem(List<Item> dataEntity, Item item) {
            int itemIndex = dataEntity.indexOf(item);
            if (itemIndex != -1) {
                dataEntity.set(itemIndex, item);
            }
        }
        

        【讨论】:

        • 这只有在新项目与旧项目在 equals() 方法方面相等时才有效,对吧?
        • @spikemanuk,这取决于 'Item' 中 'equals()' 方法的实现。如果相等性仅取决于 'Item' 的 'id',则此代码可用于将 'Item:{id=1, name=London} 替换为 'Item:{id=1, name=Paris}
        【解决方案7】:

        【讨论】: