使用流和过滤器在数组中查找最大奇数的Java程序
Java 8 引入了一些很棒的特性,如 Stream 和 Filter,它们极大地简化了读取数据和执行操作(如对它们的最小值、最大值、求和和条件检查)的任务。在这个程序中,我们将借助Java Stream 和 Filter 方法从整数列表中获取所有奇数中的最大值。
使用循环
在没有 Streams 的情况下,我们可以通过遍历列表并检查数字是否为奇数来实现给定的任务。如果为真,我们将检查它是否大于目前为止的最大奇数。
下面是该方法的实现:
Java
// Java implementation to find
// the maximum odd number in array
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
class GFG {
// Function to find the maximum
// odd number in array
public static int maxOdd(List list)
{
// Iterator for accessing the elements
Iterator it = list.iterator();
int max = 0;
while (it.hasNext()) {
int num = it.next();
// Adding the elements
// greater than 5
if (num % 2 == 1) {
if (num > max) {
max = num;
}
}
}
return max;
}
// Driver Code
public static void main(String[] args)
{
List list = new ArrayList();
list.add(11);
list.add(43);
list.add(56);
list.add(82);
list.add(51);
list.add(29);
list.add(10);
System.out.println("Largest odd number: "
+ maxOdd(list));
}
}
Java
// Java implementation to find
// the maximum odd number
// in the array
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
class GFG {
// Function to find the maximum odd
// number in the list
public static int maxOdd(List list)
{
// Converted to Stream
// Filtering the odd number
// Taking maximum out of those integers
return list.stream()
.filter(n -> n % 2 == 1)
.max(Integer::compare)
.orElse(0);
}
// Driver Code
public static void main(String[] args)
{
List list = new ArrayList();
list.add(11);
list.add(43);
list.add(56);
list.add(82);
list.add(51);
list.add(29);
list.add(10);
System.out.println("Largest odd number: "
+ maxOdd(list));
}
}
输出
Largest odd number: 51
使用流和过滤器
流过滤器返回一个流,该流由与给定谓词匹配的该流的元素组成。这是一个中间操作。这些操作总是惰性的,即执行诸如 filter() 之类的中间操作实际上并不执行任何过滤,而是创建一个新的流,当遍历时,该流包含与给定谓词匹配的初始流的元素。
下面是上述方法的实现:
Java
// Java implementation to find
// the maximum odd number
// in the array
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
class GFG {
// Function to find the maximum odd
// number in the list
public static int maxOdd(List list)
{
// Converted to Stream
// Filtering the odd number
// Taking maximum out of those integers
return list.stream()
.filter(n -> n % 2 == 1)
.max(Integer::compare)
.orElse(0);
}
// Driver Code
public static void main(String[] args)
{
List list = new ArrayList();
list.add(11);
list.add(43);
list.add(56);
list.add(82);
list.add(51);
list.add(29);
list.add(10);
System.out.println("Largest odd number: "
+ maxOdd(list));
}
}
输出
Largest odd number: 51
性能分析:
- 时间复杂度: O(N)
- 辅助空间: O(1)