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)
:找出奇数
核心逻辑:
- 遍历数组元素
- 用模运算符判断奇偶
- 将符合条件的数字存入列表
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)
核心操作:
- 将数组转为流
- 用
filter()
过滤奇偶数 - 收集结果到列表
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