使用流和過濾器查詢陣列中最大奇數的 Java 程式


在本節中,我們將編寫一個 Java 程式,使用流和過濾器在陣列中查詢最大奇數。奇數是指不能被2整除的數,或者這些數除以2的餘數為1。換句話說,可以用2n+1的形式表示。我們將找到陣列中的最大奇數。

問題陳述

Java編寫一個程式,使用流和過濾器查詢陣列中最大奇數 -

輸入
array = {1, 7, 2, 3, 9, 5, 10}
輸出
Maximum odd number is 9

從上面的例子可以看出,在陣列中,最大奇數是 9。

使用的方法

stream() - 它用於建立元素流,以便我們可以使用 filter()、map()、reduce() 等方法來處理資料

Arrays.stream(collection)	

filter() - 它用於從流中過濾資料,即根據條件從流中選擇特定的元素。它返回布林值。

Streamobject.filter(condition)	

reduce() - 它用於減少元素的數量,並根據二元運算返回單個結果數。

Streamobject.reduce(initial value, binary operation)	

我們現在將討論使用流和過濾器在陣列中查詢最大奇數的不同方法,並使用 Java 中的程式碼實現進行說明。

方法 1:使用 stream() 和 filter() 以及 max()

以下是使用 stream() 和 filter() 以及 max() 方法在陣列中查詢最大奇數的步驟 -

  • 初始化一個數組,並使用stream() 方法為陣列建立流。

  • 使用filter 方法()和作為引數的條件來過濾流,以便從陣列中篩選出奇數。

  • 使用max() 方法返回最大奇數,否則如果不存在奇數,則使用orElse() 方法列印-1

示例

import java.util.*;
public class Main {
   public static void main(String[] args) {
      int[] array = {1, 7, 2, 3, 9, 5, 10};
      int maximumOdd = Arrays.stream(array)
      .filter(n -> n % 2 != 0)
      .max()
      .orElse(-1);
      System.out.println("Maximum odd number is: " +maximumOdd);
   }
}

輸出

Maximum odd number is: 9	

程式碼解釋

在上面的示例中,我們首先初始化一個數組。然後我們使用stream() 方法將陣列轉換為流,然後對流使用filter() 方法過濾出流中存在的奇數,並在結果流上使用max() 方法查詢流中所有奇數的最大值。如果流中不存在奇數,則我們使用orElse函式,它返回輸入引數的值。然後我們列印maximumOdd變數中儲存的值。

方法 2:使用 stream()、filter() 和 reduce() 方法

以下是使用stream()、filter() 和 reduce() 方法在陣列中查詢最大奇數的步驟 -

  • 初始化一個數組,並使用stream() 方法為陣列建立流

  • 使用filter() 方法和作為引數的條件來過濾流,以便從陣列中篩選出奇數。

  • 使用reduce() 方法查詢最大奇數。

  • 使用三元運算子列印最大奇數,否則如果不存在奇數,則列印-1。

示例

import java.util.*;
public class Main {
   public static void main(String[] args) {
      int[] array = {1, 7, 2, 3, 9, 5};
      int maximumOdd = Arrays.stream(array)
      .filter(n -> n % 2 != 0)
      .reduce(Integer.MIN_VALUE, Integer::max);
      System.out.println("Maximum odd number in the given array is   " + (maximumOdd != Integer.MIN_VALUE ? maximumOdd : -1));
   }
}

輸出

Maximum odd number in the given array is 9

程式碼解釋

在這個例子中,我們首先初始化一個數組。然後我們使用stream() 方法將陣列轉換為流,然後對流使用filter() 方法過濾出流中存在的奇數,並在結果流上使用reduce() 方法查詢流中所有奇數的最大值。如果流中不存在奇數,則maximumOdd數包含Integer.MIN_VALUE。然後我們使用三元運算?並檢查maximumOdd變數是否包含Integer.MIN_VALUE。如果它包含Integer.MIN_VALUE,則我們列印-1,否則我們列印maximumOdd變數中儲存的值。

因此,在本文中,我們討論瞭如何在 Java 中使用不同的方法使用 Stream 和 Filter 在陣列中查詢最大奇數。

更新時間: 2024-07-25

1K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.