Wie wandelt man zweidimensionale Arrays in eindimensionale und umgekehrt?

Mit Hilfe einer einfachen Hilfsvariablen kann man die Werte eines zweidimensionalen Arrays in ein eindimensionales einlesen. Hierzu deklariert man zunächst die Hilfsvariable und initialisiert sie mit 0. Man durchläuft anschließend das Ausgangsarray innerhalb zweier geschachtelten Schleifen und übergibt die ausgelesenen Werte dem vorher in der benötigten Größe deklarierten eindimensionalen Array. Als Zählvariable verwendet man die Hilfsvariable.

public class ZweiDim2EinDim {

    public static void main(String[] args) {

        String[] einString = new String[9];
        String[][] zweiString = {
                new String[] { "einsEins", "einsZwei", "einsDrei" },
                new String[] { "zweiEins", "zweiZwei", "zweiDrei" },
                new String[] { "dreiEins", "dreiZwei", "dreiDrei" } };

        int counter = 0;
        for (int i = 0; i < zweiString.length; i++) {
            for (int j = 0; j < zweiString[i].length; j++) {
                einString[counter] = zweiString[i][j];
                System.out.println(einString[counter]);
                counter++;
            }
        }
    }
}

Wie kann man nun den umgekehrten Weg beschreiten, also ein eindimensionales in ein zweidimensionales Array überführen?
Zunächst werden ein eindimensionales und ein zweidimensionales Array deklariert. Das eindimensionale wird in einer Schleife mit Werten belegt. Im Gegensatz zu obigem Beispiel wird der Einfachheit halber hier ein int-Array verwendet.
Wiederum werden zwei verschachtelte Schleifen erzeugt. In der inneren wird wie gehabt eine vorher erzeugte Hilfsvariable inkrementiert. Sie dient als Index des eindimensionalen Arrays. Das zweidimensionale wird über die Zählvariablen der Schleifen abgearbeitet.

public class EinDim2ZweiDim {

    public static void main(String[] args) {
        int zahl = 3;
        int[] einDim = new int[zahl * zahl];
        int[][] zweiDim = new int[zahl][zahl];
        for (int i = 0; i < zahl * zahl; i++) {
            einDim[i] = i;
        }

        int counter = 0;
        for (int i = 0; i < zahl; i++) {
            for (int j = 0; j < zahl; j++) {
                zweiDim[i][j] = einDim[counter];
                System.out.println(i + " | " + j + " | " + zweiDim[i][j]);
                counter++;
            }
        }
    }
}