如何在Java中替换ArrayList元素的现有值

163

我正在尝试使用以下代码更新 ArrayList 中现有值:

public static void main(String[] args) {

    List<String> list = new ArrayList<String>();
    
    list.add( "Zero" );
    list.add( "One" );
    list.add( "Two" );
    list.add( "Three" );
    
    list.add( 2, "New" ); // add at 2nd index
    
    System.out.println(list);
}

我想要打印出New而不是Two,但我得到的结果是[Zero, One, New, Two, Three],并且我仍然有Two。我想要打印出[Zero, One, New, Three]。我该怎么做?

4个回答

316

使用 set 方法用新值替换旧值。

list.set( 2, "New" );

34

如果您不知道要替换的位置,请使用列表迭代器查找和替换元素 ListIterator.set(E e)

ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
     String next = iterator.next();
     if (next.equals("Two")) {
         //Replace element
         iterator.set("New");
     }
 }

26

1
如果我不知道对象的索引,但仍然想在特定位置替换对象,这是否可能? - santhanam
7
你可以使用 list.set(list.indexOf(oldObject), newObject); 这个方法来替换列表中的元素。 - Alberto Alegria
1
@Alberto 如果是同一元素但有更新,怎么办? - Mohammad Ali
@MohammadAli 覆盖你的对象类中的 equals 方法,并实现自己的规则以检查对象是否相同(相等),这样 List.contains(object)List.indexOf(object)object1.equals(object2) 将正常工作。 - user25
@santhanam 注意,indexOf将返回元素第一次出现的索引。 - arxakoulini

4
你必须使用

标签


list.remove(indexYouWantToReplace);

首先。

你的元素将变成这样:[零,一,三]

然后添加这个

list.add(indexYouWantedToReplace, newElement)

您的元素将变成这样:[零,一,新,三]


2
如果您在调用_remove_方法时没有遍历列表,则此方法才有效。有关更多信息,请参见链接 - wegenmic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接