20.09.19 10458 Views 5

credit: ©aRoksolana

Java Blog

Mehrdimensionale Arrays durchsuchen

Wie durchsucht man ein mehrdimensionales Array nach einem ganz bestimmtes Element? Um dieses Problem zu lösen, brauchen wir nichts weiter als ein paar verschachtelte Schleifen...

Falconbyte unterstüzen

Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.

Schnelles Code-Beispiel:

int[][] array = {{1,2,3}, {4,5,6}, {7,8,9}};

for(int i = 0; i < array.length; i++){
    for(int y = 0; y < array[i].length; y++){
        if(array[i][y] == 5) { // Element suchen
            System.out.print("gefunden!");
        }
    }
}

Tutorial

Sehen wir uns ein weiteres Beispiel etwas ausführlicher an. Es geht diesmal um ein ganz typisches zweidimensionales Array von Strings:

String[][] employees = {
    {"Robert", "Inspector", "20K", "35 years", "New York"},
    {"James", "Captain", "40K", "47 years", "San Francisco"},
    {"Mary", "Commander", "15K", "23 years", "New Berlin"},
    {"Riker", "First Officer", "70K", "40 years", "Alaska"},
    {"Elisabeth", "President", "90K", "52 years", "London"},
    {"Sarah", "Inspector", "30K", "27 years", "Munich"},
    {"Sabrina", "First Admin", "100K", "32 years", "Heidelberg"},
    {"Jon", "Lord Commander", "5K", "30 years", "Winterfell"},
};

Wir suchen jetzt die Position eines ganz bestimmten String-Elements, sagen wir mal Riker:

String gesuchtesElement = "Riker";

for(int i = 0; i < employees.length; i++){
    for(int y = 0; y < employees[i].length; y++){
        if(employees[i][y].equals(gesuchtesElement)) { // Element suchen
            System.out.print(i + " " + y);
        }
    }
}

Wir vergleichen mit der verschachtelten for-Schleife jedes Element aller Sub-Arrays mit dem String Riker. Bei einem Treffer werden die Schleifenvariablen i und y bzw. die Index-Positionen auf der Konsole geprinted.

Als Ergebnis dieses Codes erhalten wir somit 3 0. Das ist genau die Index-Position von Riker im 2D-Array. Riker befindet sich nämlich im vierten Sub-Array (Index: 3) und in diesem ist es das erste Element (Index: 0)

Element im dreidimensionalen Array suchen

Um ein einzelnes Element in einem nun dreidimensionalem Array zu suchen, muss die Schleifenkonstruktion nur um eine weitere Schleife verschachtelt werden.

Hier zunächst als Beispiel ein 3d-Array aus int-Werten:

int[][][] theCube =
    {{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}},
    {{10, 11, 12}, {13, 14, 15}, {16, 17, 18}},
    {{19, 20, 21}, {22, 23, 24}, {25, 26, 27}}
};

Und jetzt die Lösung:

int gesuchtesElement = 17;
for (int i = 0; i < theCube.length; i++) {
    for (int y = 0; y < theCube[i].length; y++) {
        for (int z = 0; z < theCube[i][y].length; z++) {
            if (theCube[i][y][z] == gesuchtesElement) { // Element suchen
                System.out.print(i + " " + y + " " + z);
            }
        }
    }
}

Was erhalten wir wohl auf der Konsole geprinted, wenn wir nach dem int-Element 17 suchen?

Richtig: 1 2 1

Java lernen

text text

PHP Lernen

zur PHP

JavaScript lernen

move nove move

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2023 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte Youtube Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen