представляет матрицу с метками столбца / строки - PullRequest
0 голосов
/ 27 июня 2018

enter image description here

Я хотел бы создать 2d массив с Java или матрицу с целыми числами.

Я уже сделал это ... но я до сих пор не знаю, как назначить метки для строк / столбцов.

Я хотел бы иметь возможность получить доступ к любому числу внутри матрицы на основе строки / столбцов

Это мой код Java

 Gson gson = new Gson();
    int[][] data = {{78, 0, 0, 0, 0}, {0, 54, 0, 0, 0}, {0, 0, 12, 0, 0}, {0, 0, 0, 74, 0}, {0, 0, 0, 0, 11}};
    String json = gson.toJson(data);

    // Convert JSON string into multidimensional array of int.
    int[][] dataHeatMap = gson.fromJson(json, int[][].class);
    for (int[] i : dataHeatMap) {
        for (int j : i) {
            System.out.print(j + " ");
        }
        System.out.println("");
    }
    return json;

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Используйте ENUM типы, которые представляют специальный индекс вашего 2dim Array. Дайте им поле с именем value / name / ... и создайте их с индексом их в массиве. После этого вы можете легко вызвать их, получив их буквенное значение, которое представляет индекс массива.

Он очень удобочитаемый, и ENUM.<VALUE> не представляет значение INT. Вот как вы можете это сделать.

public enum ROW {
        A(0), B(1), C(2), D(3), E(4);

        private final int value;
        ROW(int value) { this.value = value; }
        public int getValue() { return value; }
    }

    public enum COL {
        F(0), G(1), H(2), I(3), J(4);

        private final int value;
        COL(int value) { this.value = value; }
        public int getValue() { return value; }
    }

    public static void main(String []args){
        int[][] matrix = {{78, 0, 0, 0, 0}, {0, 54, 0, 0, 0}, {0, 0, 12, 0, 0}, {0, 0, 0, 74, 0}, {0, 0, 0, 0, 11}};
        System.out.println("Value: " + matrix[ROW.A.getValue()][COL.F.getValue()]);
    }

Я бы предпочел способ выше, потому что вы видите, что происходит напрямую, и можете присвоить любое значение, которое вы хотите. Но вы также можете использовать ENUM.ordinal () тоже. Тогда data[ROW.a.ordinal()][...] вернет 0 для ROW, потому что он указан первым. b вернет 1, ... Это зависит только от того, как они перечислены / созданы на ENUM.

0 голосов
/ 27 июня 2018

Вы можете использовать Enum s:

public enum ROW {a, b, c, d, e}
public enum COL {f, g, h, i, j}

data[ROW.a.ordinal()][COL.f.ordinal()] = 3;
...