Wie prüft man, ob ein Java Array einen Wert enthält?
Es gibt viele Möglichkeiten, um zu überprüfen, ob ein Java Array einen bestimmten Wert enthält.
- Einfache Iteration mit einer for-Schleife
- List-Methode
contains()
- Stream-Methode
anyMatch()
Arrays.binarySearch()
für sortierte Arrays
Schauen wir uns diese Methoden nacheinander an.
Verwendung der for-Schleife, um zu prüfen, ob ein Java Array einen Wert enthält
Dies ist die einfachste und bequemste Methode, um zu überprüfen, ob das Array einen bestimmten Wert enthält oder nicht. Wir durchlaufen die Array-Elemente mit einer for-Schleife und verwenden die Methode equals()
, um zu prüfen, ob das Array-Element mit dem angegebenen Wert übereinstimmt.
String[] vowels = { "A", "I", "E", "O", "U" };
// Iteration über die Array-Elemente
for (String s : vowels) {
if ("E".equals(s)) {
System.out.println("E ist in der Vokalliste enthalten.");
}
}
Verwendung der List-Methode contains()
, um zu prüfen, ob ein Java Array einen Wert enthält
Wir können die Klasse Arrays
verwenden, um eine Listenrepräsentation des Arrays zu erhalten. Dann nutzen wir die Methode contains()
, um zu prüfen, ob das Array den Wert enthält. Schauen wir uns ein Beispiel mit JShell an.
jshell> String[] vowels = { "A", "I", "E", "O", "U" };
vowels ==> String[5] { "A", "I", "E", "O", "U" }
jshell> List vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]
jshell> vowelsList.contains("U")
$3 ==> true
jshell> vowelsList.contains("X")
$4 ==> false
Verwendung der Stream-Methode anyMatch()
Wenn Sie Java 8 oder höher verwenden, können Sie einen Stream aus dem Array erstellen. Anschließend nutzen Sie die Methode anyMatch()
mit einem Lambda-Ausdruck, um zu prüfen, ob ein bestimmter Wert enthalten ist.
jshell> List vowelsList = Arrays.asList(vowels);
vowelsList ==> [A, I, E, O, U]
jshell> Arrays.stream(vowels).anyMatch("O"::equals);
$5 ==> true
jshell> Arrays.stream(vowels).anyMatch("X"::equals);
$6 ==> false
Verwendung von Arrays.binarySearch()
für sortierte Arrays
Wenn Ihr Array sortiert ist, können Sie die Methode Arrays.binarySearch()
verwenden, um zu prüfen, ob das Array den angegebenen Wert enthält oder nicht.
String[] vowels = { "A", "I", "E", "O", "U" };
System.out.println("Unsortiertes Array = " + Arrays.toString(vowels));
Arrays.parallelSort(vowels);
System.out.println("Sortiertes Array = " + Arrays.toString(vowels));
int index = Arrays.binarySearch(vowels, "X");
if (index < 0) {
System.out.println("X ist nicht im Array enthalten");
} else {
System.out.println("X ist im Array enthalten");
}
Ausgabe:
Unsortiertes Array = [A, I, E, O, U]
Sortiertes Array = [A, E, I, O, U]
X ist nicht im Array enthalten
Prüfen, ob ein Java Array mehrere Werte enthält
Was, wenn wir prüfen möchten, ob das Array mehrere Werte enthält? Angenommen, Sie möchten prüfen, ob ein gegebenes Array eine Teilmenge des Quellarrays ist. Wir können verschachtelte Schleifen erstellen und jedes Element einzeln überprüfen. Eine elegantere Lösung ist jedoch, die Arrays in Listen umzuwandeln und die Methode containsAll()
zu verwenden.
String[] vowels = { "A", "I", "E", "O", "U" };
String[] subset = { "E", "U" };
boolean foundAll = Arrays.asList(vowels).containsAll(Arrays.asList(subset));
System.out.println("vowels enthält alle Elemente in subset = " + foundAll);
Ausgabe:
vowels enthält alle Elemente in subset = true