Wie lässt sich ein Array nach einem bestimmten Wert durchsuchen?
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.
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.