我有一个像这样的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
。
这是怎么回事?
答案 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]