【问题标题】:How to replace existing value of ArrayList element in Java [duplicate]如何在Java中替换ArrayList元素的现有值[重复]
【发布时间】:2014-07-21 18:32:29
【问题描述】:

我对 Java 编程还是很陌生,我正在尝试使用以下代码更新 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]。我怎样才能做到这一点? 谢谢。

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    你必须使用

    list.remove(indexYouWantToReplace);
    

    首先。

    你的元素会变成这样。 [zero, one, three]

    然后添加这个

    list.add(indexYouWantedToReplace, newElement)
    

    你的元素会变成这样。 [zero, one, new, three]

    【讨论】:

    • 这种方法只有在调用 remove 方法时没有遍历列表时才有效。请参阅link 了解更多信息
    【解决方案2】:

    使用ArrayList.set

    list.set(2, "New");
    

    【讨论】:

    • 如果我不知道对象的索引怎么办,我还是想在特定的地方用新的替换对象。有可能吗?
    • @santhanam 你可以使用 list.set(list.indexOf(oldObject), newObject);
    • @Alberto 如果它是相同的元素但更新了怎么办?
    • @MohammadAli 覆盖对象类的equals 方法并实现自己的规则来检查对象是否相同(相等),之后List.contains(object)List.indexOf(object)object1.equals(object2) 将起作用好的
    • @santhanam 注意 indexOf 将返回元素第一次出现的索引
    【解决方案3】:

    如果您不知道要替换的位置,请使用列表迭代器查找和替换元素 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");
         }
     }
    

    【讨论】:

      【解决方案4】:

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

      list.set( 2, "New" );
      

      【讨论】:

        猜你喜欢
        • 2011-01-27
        • 1970-01-01
        • 2017-11-17
        • 2012-12-14
        • 1970-01-01
        • 2013-04-04
        • 2020-07-24
        • 1970-01-01
        • 2013-03-09
        相关资源
        最近更新 更多