Wie lässt sich ein Array nach einem bestimmten Wert durchsuchen?

Die Klasse Arrays bietet eine Vielzahl an statischen, überladenen Methoden, mit denen Arrays nach einem gespeicherten Wert durchsucht werden können.

Zur Suche wird der Algorithmus der binären Suche verwendet und der Index des Vorkommens im Array zurück gegeben, falls der Wert gefunden wird. Hierzu muss das Array vorher allerdings aufsteigend sortiert werden, so wie es die Methode Arrays.sort() vornimmt.

import java.util.Arrays;

public class ArrayDurchsuchen {

    public static void main(String[] args) {
        char[] charArr = { 196, 228, 214, 246, 220, 252, 223 };
        char searched = 246;
        Arrays.sort(charArr);
        // vor Durchsuchung muss Array sortiert sein!
        int i = Arrays.binarySearch(charArr, searched);
        for (int k=0; k<charArr.length; k++)
            System.out.println(k + ".: " + charArr[k]);
        if (i > -1) {
            System.out.println(searched + " an " + i + ". Stelle gefunden.");
        }
    }
}

Im Beispiel wird ein unsortiertes Array mit den Dezimalwerten der deutschen Umlaute und des 'ß' nach 'ö' durchsucht, das im unsortierten Array an Index 4 gespeichert ist. Der Character wird an Index 5 gefunden, da er nach der Sortierung an dieser Position erscheint.
Wird nach einem Eintrag gesucht, der im Array nicht vorhanden ist, so wird ein negativer Wert zurück gegeben, dessen Betrag der Position (nicht dem Index!) entspricht, an der er gespeichert wäre, wenn es ihn gäbe.
Im vorliegenden Fall ergäbe die Suche nach dem char 100 die Rückgabe -1, nach 200 -2 und nach 500 den Wert -8. Um auf ein Vorkommen im Array zu prüfen, muss somit nur auf die Rückgabe eines positiven Wertes getestet werden. Ist ein und derselbe Wert mehrfach im Array vorhanden, so ist die Rückgabe ebenfalls postiv, der Betrag ist jedoch nicht vorhersagbar.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.