Arraylist - 设置/添加方法用法 - Java

时间:2012-02-02 15:02:55

标签: java replace arraylist

我有一个整数的Arraylist。 我的要求是确定arraylist是否存在于指定索引处的元素。如果是,则应将值设置为该索引(使用set方法),否则应将值添加到该索引位置(使用add方法)

在我的java代码中找到处理上述条件有点困难。请帮助。

这是我到目前为止所拥有的:

    ArrayList<Integer> tempArray = new ArrayList<Integer>();
        int counter = 0;
        int tempValue = 0;
    For LOOP -
      if (//certain conditions are satisfied){

      tempValue = calculateNewValue();
      tempArray.add(counter, tempValue); //Need some logic here to determine if its a set or add method to be used
    }
if (//some other conditions are satisfied){
       counter++;
}
    end For LOOP

7 个答案:

答案 0 :(得分:4)

您不需要循环。您可以使用ArrayList has an indexOf方法来获取对象的第一个出现位置。请务必正确实施equals

ArrayList also has an add方法,允许您设置插入元素的索引。 Or a set method,这可能是你想要的(取决于你想要做什么)

答案 1 :(得分:4)

set方法用新元素替换指定位置的元素。 但是在add(position,element)中会将元素添加到指定位置,并将现有元素移动到数组的右侧。

ArrayList<String> al = new ArrayList<String>();

    al.add("a");
    al.add(1, "b");
    System.out.println(al);

    al.set(0, "c");
    System.out.println(al);

    al.add(0, "d");
    System.out.println(al);

---------------输出------------------------------- ------

[a,b]

[c,b]

[d,c,b]

答案 2 :(得分:3)

其他答案已提供有关使用列表中可用的indexOf方法的信息。但是,只需添加一些关于&#34;添加&#34;之间差异的信息。和&#34;设置&#34;在java中的ArrayList中。

来自javadocs -

set(index, value)方法 - 将指定元素插入此列表中的指定位置。将当前位置的元素(如果有)和右侧的任何后续元素移位(将其添加到索引中)。

increases your list size - 用指定的元素替换此列表中指定位置的元素。

因此也使用add()而不是set(){{1}}。无论你是否需要这种行为,你都应该考虑这一点。

答案 3 :(得分:2)

您想要的是Map而不是List

如果counter大于List.size(),会怎样?你是否根据需要添加了多少元素?

答案 4 :(得分:2)

以下是确定在数组中插入或替换值的位置的逻辑。

if (tempArray.indexOf(tempValue) < 0) {
    tempArray.add(counter, tempValue);
} else {
    tempArray.set(counter, tempValue);
}

P.S。最好将counter重命名为index

答案 5 :(得分:1)

ArrayList.set(index,element)将指定的元素添加到列表中提到的索引处。这将是替换操作,因此列表大小将保持不变。 ArrayList.add(index,element)将指定的元素添加到列表中提到的索引处。这不是替换操作,因此它将首先右移提到的索引中的所有元素,最后将元素添加到索引位置。现在size = size + 1。

答案 6 :(得分:0)

ArrayListcontains(Object o) method,如果列表包含指定的元素&#34;&#34;返回true,同样您可以确定哪个方法add()或{{1}使用。