1. 概述

在Java开发中,从数组中区分奇数和偶数是常见任务。掌握这个技巧能提升数据处理效率,为实现更复杂的算法打下基础。

本文将介绍使用Java在数组中识别奇数和偶数的几种方法

2. 奇偶数与模运算符

在编码前,先理解奇偶数的数学定义:

  • 偶数:能被2整除的整数(如10、22)
  • 奇数:除以2余1的整数(如7、15)

Java中常用模运算符(%)判断奇偶性

  • number % 2 == 0 → 偶数
  • number % 2 != 0 → 奇数

3. 使用循环识别奇偶数

通过遍历数组元素,我们可以用循环判断每个数字的奇偶性。这里实现两个方法:

  • findEvenNumbersWithLoop(int[] numbers):找出偶数
  • findOddNumbersWithLoop(int[] numbers):找出奇数

核心逻辑:

  1. 遍历数组元素
  2. 用模运算符判断奇偶
  3. 将符合条件的数字存入列表
public static List<Integer> findOddNumbersWithLoop(int[] numbers) {
    List<Integer> oddNumbers = new ArrayList<>();
    for (int number : numbers) {
        if (number % 2 != 0) {
            oddNumbers.add(number);
        }
    }
    return oddNumbers;
}

public static List<Integer> findEvenNumbersWithLoop(int[] numbers) {
    List<Integer> evenNumbers = new ArrayList<>();
    for (int number : numbers) {
        if (number % 2 == 0) {
            evenNumbers.add(number);
        }
    }
    return evenNumbers;
}

✅ 优点:代码直观易懂
❌ 缺点:传统写法略显冗长

4. 使用Stream API识别奇偶数

Java 8的Stream API提供了更现代化的处理方式。我们实现两个新方法:

  • findEvenNumbersWithStream(int[] numbers)
  • findOddNumbersWithStream(int[] numbers)

核心操作:

  1. 将数组转为流
  2. filter()过滤奇偶数
  3. 收集结果到列表
public static List<Integer> findEvenNumbersWithStream(int[] numbers) {
    return Arrays.stream(numbers)
      .filter(number -> number % 2 == 0)
      .boxed()
      .collect(Collectors.toList());
}

public static List<Integer> findOddNumbersWithStream(int[] numbers) {
    return Arrays.stream(numbers)
      .filter(number -> number % 2 != 0)
      .boxed()
      .collect(Collectors.toList());
}

✅ 优点:代码简洁,函数式风格
⚠️ 注意:需要Java 8+环境

5. 总结

在数组中识别奇偶数是Java基础操作,但应用广泛。通过结合模运算符与循环或Stream API,我们可以高效完成分类任务。

本文提供的方法可作为处理类似问题的参考模板,建议根据实际场景选择:

  • 简单场景 → 传统循环
  • 复杂处理 → Stream API

完整代码示例可在GitHub查看:github.com/eugenp/tutorials


原始标题:How to Find the Odd and Even Numbers in an Array? | Baeldung