如何删除Arraylist中的索引直到列表变空? [关闭]

问题描述 投票:0回答:4

我很长一段时间都面临着这个问题,请有人帮助我。我想删除所有偶数索引号。

输入= 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
   }
 }
java arrays dynamic
4个回答
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
投票

注意:由于数组索引从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。我不知道为什么会这样


0
投票

如果我正确理解了这个问题,你想要删除偶数索引处的元素。从最后一个元素到第一个元素遍历arraylist并检查每个索引是否为偶数并删除该特定索引处的元素将起到作用。这里的主要内容是以相反的顺序迭代,因为从索引0到结尾的迭代不起作用。


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);
  }
© www.soinside.com 2019 - 2024. All rights reserved.