如何从数组列表中删除偶数索引,直到列表变空?

时间:2019-03-04 09:41:36

标签: java arrays dynamic

我长期以来一直在面对这个问题,请有人帮我。 我要删除所有偶数索引号。

输入= 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
   }
 }

4 个答案:

答案 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到末尾的迭代无效。