筛选奇数
请补充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();
}
}
}