如何从ArrayList中删除条目

时间:2016-04-07 17:27:22

标签: java arraylist

我有一个像这样的ArrayList;

int a=0;
int b=0;
int c=4;

ArrayList<Integer> al=new ArrayList<Integer>();
al.add(a);
al.add(b);
al.add(c);

我想删除所有值为0的条目,并将int c的值4变为index 0

这是怎么回事?

7 个答案:

答案 0 :(得分:5)

这应该有效:

for (int i = 0; i < al.size(); i++) {
  if (al.get(i) == 0) {
    al.remove(i);
    i--;
  }
}

答案 1 :(得分:3)

Java 8流方式,可能不适合你(不使用Java 8,老师不寻找这种方式等)。

al.removeIf(a -> a == 0);

答案 2 :(得分:2)

Iterator获取List,如果检索到的值为0,则对其进行迭代并致电Iterator.remove()。像,

int a = 0, b = 0, c = 4;
List<Integer> al = new ArrayList<>(Arrays.asList(Integer.valueOf(a), b, c));
Iterator<Integer> iter = al.iterator();
while (iter.hasNext()) {
    if (iter.next() == 0) {
        iter.remove();
    }
}
System.out.println(al);

输出是(因为4是要求的元素0)

[4]

答案 3 :(得分:2)

Arraylist有一个名为remove(index i)的方法 它还有一个名为set(index i,element e)的方法 因此,您将为arraylist的大小创建一个循环,检查值是否为0以及是否调用remove方法。
如果你想将索引0的值设置为4,那么使用set方法但不要在循环中执行,因为它会执行多次,这是低效的编程。

答案 4 :(得分:1)

我认为这是作业,所以我不会给出答案。转到https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html并查看Add,Get和Remove方法。这些方法提供了您正在寻找的功能。

答案 5 :(得分:0)

试试这个:

for(int i=0;i<al.size();i++){
    if(al.get(i)==0){
         al.remove(i);
         i--;
    }
}

答案 6 :(得分:0)

List<Integer> al = new ArrayList<Integer>();
al.add(0);
al.add(0);
al.add(4);
List<Integer> modAl = new ArrayList<Integer>();

Collections.sort(al);

for (int i : al) {
    if (i != 0 ) {
         modAl.add(i);
    }
}
Collections.sort(modAl, Collections.reverseOrder());
al = modAl;
System.out.println(al);

输出:

[4]