Java ArrayList在特定索引处替换


212

我需要有关此Java的帮助。我创建了一个ArrayList的灯泡,并且试图用另一个灯泡替换特定索引处的灯泡。因此,在以下标题下,我该如何进行?

public void replaceBulb(int index, Bulbs theBulb) {

}

9
对于它的价值,我正在查看“替换”,“放置”或“插入”的列表界面。我没想到要寻找套装。
GuiSim 2014年

2
@GuiSim列表界面不是很长,您可以在5分钟内一次轻松地完整阅读它

2
我使用的是Eclipse的自动完成功能,没有查看界面。
GuiSim 2014年

Answers:


367

set(int index, E element)列表界面中检查方法


3
您的权利。但是您可能会考虑对其进行编辑,因为您的答案会导致以下事实:set()方法是一个静态方法,不是吗?
Android杀手

9
@AndroidKiller这是静态的,ArrayList.set();但是当您在自己的列表中调用它时,它不是:myArrayList.set(int, E);
whitfin

此方法中的问题是,如果未初始化arrayList,它将引发arrayOutOfBoundException。我想将元素添加到正确的索引处,不确定是否有办法做到这一点。
Bionix1441

@ Bionix1441即使列表已初始化,仍然可以尝试为不存在的索引设置值。因此,您只需要确保索引有效即可。
龙猫龙猫

126

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

list.set( your_index, your_item );

但是该元素应该出现在您通过set()方法传递的索引处,否则它将引发异常。


1
@vaxquis好的,先生,请编写Java 8并释放它。我们在这里使用它。;)。在SO中,答案应始终根据问题,因此请先阅读问题。如果返回的是先前的值,那会是什么问题,如果您想要该值,则可以使用else保留它。它正在替换旧值,就是这样。
Android Killer,

1
@vaxquis您之前看过我的评论吗?明确提到的答案应始终根据问题。提出问题的人,他提到他想替换元素,这意味着他具有包含元素的arraylist。现在清除先生???
Android Killer,2013年

1
@vaxquis您考虑的事情,新手将知道这一点,因此这些问题没有任何意义。我仍然进行了编辑以使您开心:)
Android Killer

2
成为新手意味着某人不知道如何正确编写代码。提供无效的代码总是错误的,没有任何借口,因为它可能并且通常会给初学者带来困惑。提供一个正确且自包含的代码示例就是StackOverflow的目的。感谢您对答案的改进。



7
public void setItem(List<Item> dataEntity, Item item) {
    int itemIndex = dataEntity.indexOf(item);
    if (itemIndex != -1) {
        dataEntity.set(itemIndex, item);
    }
}

1
只有在equals()方法方面新项目等于旧项目的情况下,这才起作用,对吗?
spinmanuk '16

@spikemanuk,这取决于'Item'中'equals()'方法的实现。如果相等仅取决于“项目”的“ id”,则此代码可用于将“ Item:{id = 1,name = London}”替换为“ Item:{id = 1,name = Paris}”
Aniruddha Jagtap
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.