我长期以来一直在面对这个问题,请有人帮我。 我要删除所有偶数索引号。
输入= 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
}
}
答案 0 :(得分:1)
这是我们从列表中删除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
结尾。
答案 1 :(得分:1)
注意:由于数组索引从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
。我不确定为什么会在那里
答案 2 :(得分: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);
}
答案 3 :(得分:0)
如果我正确理解了这个问题,则要删除位于 偶数索引 的元素。从最后一个元素到第一个元素遍历数组列表 ,并检查每个索引是否均等,然后删除该特定索引处的元素即可解决问题。这里的主要内容是 以相反的顺序进行迭代 ,因为从索引0到末尾的迭代无效。