在 Java 中檢查陣列是否包含特定值

Rashmi Patidar 2023年1月30日 2021年10月2日
  1. 使用 Java 中的 array.contains() 方法檢查陣列是否包含特定值
  2. 使用 Java 8 流檢查陣列包含特定值
  3. 使用簡單的 for 迴圈檢查陣列是否包含特定值
在 Java 中檢查陣列是否包含特定值

陣列是按一定順序排列的元素的系統集合。在內部,陣列元素儲存在連續的記憶體位置。

有多種方法可以搜尋陣列中的元素。不同的方法導致不同的時間和複雜性。下面列出了幾種在陣列中搜尋元素的方法。

使用 Java 中的 array.contains() 方法檢查陣列是否包含特定值

在下面的程式碼塊中,我們需要用一些預定義的值例項化一個陣列 arr。現在,初始化我們要搜尋的字串。

Arrays 是一個具有各種運算元組方法的類。此類包含靜態工廠方法和欄位,它們在搜尋和排序陣列中的元素時非常有用。

asList() 方法是 Arrays 類的靜態方法。它返回從引數中獲取的指定陣列的固定列表。

contains()List 介面中的一個方法。它接受一個元素作為引數,我們將這個引數與列表中存在的元素進行比較。如果指定的元素存在於列表中,則返回布林值 true,在任何一種情況下都返回 false。如果指定元素的型別與此列表不相容,則該方法丟擲 ClassCastException;如果指定值為 null 且此列表不允許空值,則該方法丟擲 NullPointerException

package findInList;

import java.util.Arrays;

public class FindAValueInArray {
    public static void main(String[] args) {
        String[] arr = new String[]{"1", "2", "3"};
        String stringToSearch = "2";
        System.out.println(Arrays.asList(arr).contains(stringToSearch));
    }
}

上述程式的輸出如下。

true

使用 Java 8 流檢查陣列包含特定值

在上面的程式碼塊中,前兩行與第一個程式碼中的類似。這裡我們使用了 Arrays 類的 stream 方法來建立陣列流。此方法返回一個以指定陣列為源的順序流。Stream 類有一個名為 anyMatch() 的函式。該方法將謂詞作為其輸入。

Predicate 是一個函式式介面,它接受一個引數函式並返回一個 Boolean 值。它包含一個 test(T t) 方法,用於評估給定引數的謂詞。如果流的任何元素與提供的謂詞匹配,則返回 true,否則返回 false 值。

package findInList;

import java.util.Arrays;

public class FindAValueInArray {
    public static void main(String[] args) {
        String[] arr = new String[]{"1", "2", "3"};
        String stringToSearch = "2";
        System.out.println(Arrays.stream(arr).anyMatch(s -> s.equals(stringToSearch)));
    }
}

上述程式碼的輸出與第一個程式碼相同。

使用簡單的 for 迴圈檢查陣列是否包含特定值

在下面的程式碼塊中,我們使用傳統的 for 迴圈來迭代陣列。for 迴圈在 expression1 中初始化,計數器值為 0。現在將計數器值與陣列的長度進行比較。如果計數器變數小於定義陣列的長度,則程式碼塊內的語句將被執行。

for 塊內,我們使用 String 類的 equals 方法比較陣列的每個元素。如果狀態評估為真,則使用 break 關鍵字來中斷 for 迴圈的執行。如果沒有找到,程式碼將被執行與陣列中元素數量一樣多的次數。

在迴圈之後,如果在列表中搜尋到元素,則列印語句會將狀態變數的值評估為,否則將列印 false 值。

package findInList;

public class FindAValueInArray {
    public static void main(String[] args) {
        String[] arr = new String[]{"1", "2", "3"};
        String stringToSearch = "2";
        boolean status = false;
        for (int i = 0; i < arr.length; i++) {
            status = arr[i].equals(stringToSearch);
            if (status) break;
        }
        System.out.println(status);
    }
}

輸出結果也與第一段程式碼中給出的相同。

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相關文章 - Java Array