我很长一段时间都面临着这个问题,请有人帮助我。我想删除所有偶数索引号。
输入= 1,2,3,4,5,6,7,8,9,10
输出应为1)1,3,5,7,8,9
2) 1,5,7,9
3)1,7,9
4)1,7
import java.util.*;
public class Puzz1 {
public static void main(String...sdf) {
ArrayList <Integer> pep = new
Array<Integer> ();
for (int i = 1; i <= 10; i++)
pep.add(i);
int size = pep.size();
while (size > 0 ) {
for (Iterator <Integer> iterator = pep.iterator(); iterator.hasNext();) {
Integer number = iterator.next();
if( number % 2 == 0 )
iterator.remove();
}//for loop
size = pep.size();
System.out.println(pep.toString());
System.out.println(pep.size());
}//while
}
}
以下是我们如何从列表中删除even
索引上的元素:
List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
while(list.size() != 1) {
int index = 1;
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()) {
iterator.next();
if(index++ % 2 == 0) {
iterator.remove();
}
}
System.out.println("List after removal : " + list);
}
System.out.println(list);
它会在每次传递后打印列表。但是,我不确定您的解决方案如何以列表中的8
结束。
注意:由于数组索引从0开始,在从1,2,3,4,5,6,7,8,9,10
中删除偶数索引后,输出将为2,4,6,8,10
。要实现这一点,您可以从数组末尾删除元素并使用递归继续删除,直到列表变为空:
public void removeEven(List<Integer> list) {
if (list.isEmpty()) {
return;
}
for (int i = list.size() - 1; i >= 0; i--) {
if (i % 2 == 0) {
list.remove(i);
}
}
System.out.println(list);
removeEven(list);
}
如果只获得像1,3,5,7,9
这样的奇数,请使用i % 2 == 1
在输出示例中也要小心使用8
。我不知道为什么会这样
如果我正确理解了这个问题,你想要删除偶数索引处的元素。从最后一个元素到第一个元素遍历arraylist并检查每个索引是否为偶数并删除该特定索引处的元素将起到作用。这里的主要内容是以相反的顺序迭代,因为从索引0到结尾的迭代不起作用。
以下代码将从列表中删除偶数索引编号:
public void removeEvenIndex(ArrayList<Integer> list) {
for (int i = 0; i < list.size() ; i++) {
if (i % 2 == 0) {
list.remove(i);
}
}
System.out.println(list);
}