筛选奇数

请补充OddNumber类中的transform代码(在TODO注释中)。要求删除list中的偶数,仅保留奇数。 例如,原始数据为list = [1, 2, 3, 4, 5, 6], 调用transform(list);后,list变为[1, 3, 5]。

public class OddNumber {
  private static final int MAX_COUNT = 10;

  public static void main(String[] args) {
    List<Integer> numbers = genNumbers();
    printNumbers("原始数据", numbers);
    transform(numbers);
    printNumbers("处理结果", numbers);
  }

  private static void printNumbers(String title, List<Integer> numbers) {
    System.out.println(title);
    for (Integer num : numbers) {
      System.out.print(num + ", ");
    }
    System.out.println();
  }

  private static List<Integer> genNumbers() {
    List<Integer> list = new ArrayList<>();
    Random rnd = new Random();
    for (int i = 0; i < MAX_COUNT; ++i)
      list.add(rnd.nextInt(100));
    return list;
  }

  private static void transform(List<Integer> list) {
    // TODO 请补充代码
  }
}

参考解答

解法1(下标):

private static void transform(List<Integer> list) {
  int p = 0;
  while(p < list.size()) {
    System.out.println(p+" " + list.get(p));
    if(list.get(p) % 2 == 0) {
      list.remove(p);
    } else {
      p++;
    }
  }
}

解法2(迭代器):

private static void transform(List<Integer> list) {
  Iterator<Integer> i = list.iterator();
  while(i.hasNext()) {
    if(i.next() % 2 == 0) {
      i.remove();
    }
  }
}

results matching ""

    No results matching ""