Java ArrayList 在特定索引处替换
Posted
技术标签:
【中文标题】Java ArrayList 在特定索引处替换【英文标题】:Java ArrayList replace at specific index 【发布时间】:2011-11-19 03:32:25 【问题描述】:我需要有关此 java 的帮助。我创建了一个灯泡的 ArrayList,我试图用另一个灯泡替换特定索引处的灯泡。那么对于以下标题,我该如何进行呢?
public void replaceBulb(int index, Bulbs theBulb)
【问题讨论】:
对于它的价值,我正在查看“替换”、“放置”或“插入”的列表界面。我没想过要找布景。 @GuiSim 列表界面并不长,5分钟就能一口气读完…… 我用的是Eclipse的自动补全,没看界面。 【参考方案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】:使用ArrayList.set
【讨论】:
以上是关于Java ArrayList 在特定索引处替换的主要内容,如果未能解决你的问题,请参考以下文章
在索引处添加到 ArrayList 时出现 IndexOutOfBoundsException