HOWTO · Java
在 Java 中檢查陣列是否包含特定值
本文介紹了 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);
}
}
輸出結果也與第一段程式碼中給出的相同。