Перейти к содержимому

Как объявить двумерный массив в java

  • автор:

Java. Массивы. Часть 2. Двумерные и многомерные массивы

Общие понятия о массивах и использование одномерных массивов подробно описаны здесь .

Массив считается двумерным, если для определения местоположения элемента в массиве нужно указать значения двух индексов. Двумерный массив ассоциируется с таблицей. Если количество столбцов и строк массива (таблицы) одинаковое, то массив еще называют матрицей.

Массив считается многомерным, если для определения местоположения элемента в массиве нужно указать значения трех и больше индексов.

2. Пример описания и использования двумерных массивов в программе.
// матрица целых чисел размером 3*4 int Matr[][]; Matr = new int[3][4]; // заполнение ячеек матрицы Matr[0][2] = 23; Matr[0][0] = -220; Matr[2][3] = 380; // матрица вещественных чисел размером 2*3 float[][] MatrF = new float[2][3]; MatrF[0][2] = 9.88f; MatrF[0][0] = -33.8329f;
3. Пример описания двумерного массива альтернативными вариантами

В Java двумерный массив можно описывать разными способами. В данном примере показаны разные варианты описания двумерного массива целых чисел размером 2×3.

Вариант 1.

// объявление матрицы размером 2*3 int[] Matr[] = new int[2][3];

Вариант 2.

int[][] Matr = new int[2][3];

Вариант 3.

int[][] Matr = new int[2][3];

Вариант 4.

int[][] Matr; Matr = new int[2][3];

Вариант 5.

int[] Matr[]; Matr = new int[2][3];

Вариант 6.

int Matr[][]; Matr = new int[2][3];

Вариант 7.

int Matr[][] = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];

Вариант 8.

int[][] Matr = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];

Вариант 9.

int[] Matr[] = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
4. Как осуществляется инициализация двумерного массива? Пример

Чтобы осуществить инициализацию двумерного массива нужно инициализатор каждого измерения взять в отдельный ряд фигурных скобок.

В следующем примере объявляется двумерный массив вещественных чисел с именем X . Размер массива 2×3.

// инициализация двумерного массива размером 2*3 float X[][] = < < 0.1f, 0.3f, 1.2f >, < 1.3f, 2.8f, 3.2f >>;
5. Пример объявления двумерного массива, с разным числом элементов в одной строке (разной размерностью второго измерения).

В данном примере объявляется двумерный массив, в котором число элементов в каждой строке есть разным. Затем этот массив заполняется значениями как показано на рисунке.

Рисунок. Массив, в соответствии с условием задачи

// объявление массива, в котором // 3 строки с разной размерностью второго измерения long M[][] = new long[3][]; M[0] = new long[2]; // 2 элемента в нулевой строке M[1] = new long[4]; // 4 элемента в первой строке M[2] = new long[3]; // 3 элемента во второй строке M[0][0] = 10l; M[0][1] = 350l; M[1][0] = 25l; M[1][1] = 45l; M[1][2] = 85l; M[1][3] = 1200l; M[2][0] = 55l; M[2][1] = 450l; M[2][2] = 2500l;
6. Пример объявления многомерных массивов

Многомерные массивы используют 3 и больше индексов для доступа к элементам массива.

// объявление массива размером 3*2*4 int M[][][] = new int[3][2][4]; // использование массива M[1][1][2] = 23; M[0][0][1] = -12; // объявление массива размером 5*10*15 double[][][] D; D = new double[5][10][15]; D[3][7][11] = -29.33;
7. Пример инициализации многомерного массива

В данном примере инициализируется массив размером 2×3×3.

// инициализация массива размером 2*3*3 byte B[][][] = < < < 0, 1, 2 >, < 1, 2, 3 >, < 3, 4, 5 >>, < < 1, 2, 3 >, < 2, 3, 4 >, < 5, 6, 7 >> >;
8. Пример обнуления двумерной матрицы вещественных чисел размером 5×5
// обнулить матрицу размером 5*5 double Matrix[][] = new double[5][5]; for (int i=0; ifor (int j=0; jlength; j++) Matrix[i][j]=0.0;
9. Пример поиска заданного элемента в матрицы целых чисел размером 10×10
// поиск элемента в матрице short Matrix[][] = new short[10][10]; boolean f_is; short num; // искомый элемент // ввод значения num // . f_is = false; // сначала принимаем, что элемента в матрице нет for (int i=0; ifor (int j=0; jlength; j++) if (Matrix[i][j]==num) f_is = true; // элемент найден
10. Пример поиска максимального значения в матрице вещественных чисел
// поиск максимума в матрице float Matrix[][] = new float[10][10]; float max; // искомое максимальное значение // . max = Matrix[0][0]; // принять, что max - один из элементов матрицы for (int i=0; ifor (int j=0; jlength; j++) if (Matrix[i][j]>max) max = Matrix[i][j];
11. Пример вычисления суммы элементов двумерной матрицы вещественных чисел
// сумма элементов матрицы float Matrix[][] = new float[10][10]; float sum; // искомая сумма // . sum = 0; for (int i=0; ifor (int j=0; jlength; j++) sum = sum + Matrix[i][j];
12. Пример объявления и использования двумерного массива строк

В языке Java для работы с строками введен специальный класс String . В данном примере приведены разные варианты объявления, инициализации и использования двумерного массива строк.

// объявление двумерного массива строк String M1[][] = new String[5][5]; // создание переменной типа массив // запись информации в массив строк for (int i=0; ifor (int j=0; jlength; j++) M1[i][j] = "Item #" + i + j; // глубокое копирование массивов с помощью метода clone() String M2[][] = M1.clone(); // массивы M1 и M2 указывают на разные участки памяти // объявление и инициализация массива строк размером 3*3 String M3[][] = < < "Item-00", "Item-01", "Item-02" >, < "Item-10", "Item-11", "Item-12" >, < "Item-20", "Item-21", "Item-22" > >; // поверхностное копирование String M4[][]; // описание переменной типа двумерный массив строк M4 = M1; // массивы M1 и M4 указывают на один и тот же участок памяти // изменение в массиве M1 приведет к изменению в массиве M4 и наоборот M1[1][4] = "1111"; // M4[1][4] = "1111" M4[1][4] = "2222"; // M1[1][4] = "2222"
13. Пример объявления и использования двумерного массива классов

В данном примере объявлен двумерный массив классов размером 3×4. Процесс объявления переменной проходит в несколько этапов:

  • объявить переменную типа двумерный массив класса MyPoint ;
  • выделить память под общую ссылку на классы размером 3×4;
  • выделить память под каждый элемент массива, который есть классом.
// объявление переменной mp типа двумерный массив MyPoint[][] mp; // выделение памяти для массива классов размером 3*4 mp = new MyPoint[3][4]; // выделение памяти для каждого элемента массива (класса) for (int i=0; ifor (int j=0; jlength; j++) mp[i][j] = new MyPoint(); // использование массива в программе for (int i=0; ifor (int j=0; jlength; j++) mp[i][j].SetXY(i, j); int d; d = mp[2][2].GetY(); // d = 2 d = mp[1][2].GetX(); // d = 1

Связанные темы

  • Одномерные массивы
  • Нерегулярные массивы

Как объявить двумерный массив в java

Для создания двумерного массива в Java нужно определить тип данных элементов массива и указать количество строк и столбцов в массиве.

Вот пример создания двумерного массива в Java :

int[][] matrix = new int[3][4]; 

В этом примере мы создаем двумерный массив matrix , который содержит 3 строки и 4 столбца. Каждый элемент массива имеет тип int

Можно также создать двумерный массив с помощью оператора инициализации:

int[][] matrix = 1, 2, 3>, 4, 5, 6>, 7, 8, 9>, 10, 11, 12>>; 

В этом примере мы создаем двумерный массив matrix размером 4×3 и заполняем его значениями при инициализации.

Двумерные массивы в Java

Двумерные массивы в Java

Массив представляет собой объект-контейнер, который может содержать определенное количество объектов одного типа. Объекты могут быть примитивными типами: int, float, long или это могут быть объекты: String, Integer и т.д. К элементам массива получают доступ с помощью индексов.

Двумерный массив

Двумерный массив также известный как «массив массивов«. Например String [4] [5] — пример массива массивов с 4 строками и 5 столбцами. Когда мы вызываем функцию длины массива, то она возвращает количество строк в массиве.

Когда мы инициализируем массив, нужно указать его размер. Давайте посмотрим пример двумерного массива в простой Java программе. Когда мы инициализируем многомерные массивы, нам не нужно указывать размер для всех размеров, требуется только «левое измерение» (строки).

Двумерные массивы в java – инициализация, вывод и сортировка

Двумерный массив – это массив одномерных массивов. Я никогда не использовал 4-мерные массивы, даже трехмерные не так распространены.

Теперь возникает вопрос, когда используются многомерные массивы? Ну, 2D-массивы очень распространены в платформенных играх, таких как Super Mario, для представления экрана или местности; 2D блоки можно также использовать для того, чтобы представить электронную таблицу, или шахматы. Еще одним популярным применением являются матрицы.

Для представления матриц 3×2 необходимо 2 двумерных массива, состоящих из массива длины 3. Другими словами, каждая строка в двумерном массиве является одномерным массивом.

Java действительно не поддерживает многомерные массивы, но позволяет создавать и использовать массивы любого количества измерений. В истинном 2D массиве все элементы занимают непрерывный блок памяти, но в Java это не так. Вместо этого многомерный массив является массивом массива.

двумерные массивы java визуализация

Это в отличие от языков, таких как C или FORTRAN, который позволяет массиву Java иметь строки различной длины, т. е. может иметь 2 столбца в одной строке и 3 столбца.

Массив 2×2 может содержать всего 4 элемента, и к ним можно получить доступ с помощью индекса строк и столбцов, например, [0][0] даст вам элементы в первой строке и первом столбце, аналогично[1][1] даст вам элементы из 2-й строки и 2-го столбца. Индекс начинается с 0 и заканчивается на -1.

Второе измерение является необязательным в Java. Вы можете создать 2D массив без указания обоих измерений, например, int[4][] является допустимым.
При создании двумерных или трехмерных array, первое измерение должно быть обязательно int[][3] – так нельзя, но int[3][] – это можно.

Как объявить двумерный массив в Java?

Вместо одной скобки вы будете использовать две, например, int [] [] – двумерный целочисленный массив. Определяется это следующим образом:

int[][] multiples = new int[4][2]; // 2D integer array 4 строки и 2 столбца String[][] cities = new String[3][3]; // 2D String array 3 строки и 3 столбца

Кстати, когда вы изначально объявляете, вы должны помнить, что нужно указать первое измерение, например, следующее объявление является неверным:

int[][] wrong = new int[][]; // not OK, you must specify 1st dimension int[][] right = new int[2][];

Выражение выдаст ошибку “переменная должна предоставить либо выражения измерения, либо инициализатор массива” во время компиляции. С другой стороны, при заполнении, второе измерение является необязательным и даже если вы не укажете, компилятор не будет ругаться, как показано ниже:

String[][] myArray = new String[5][]; // OK String[][] yourArray = new String[5][4]; // OK

Потому что двумерный массив не что иное, как массив из одномерных массивов, из-за этого, вы также можете создать двумерный, где отдельные одномерные имеет разную длину, как показано в следующем примере.

class TwoDimensionalArray < public static void main(String[] args) < String[][] salutation = < , >; // Mr. Kumar System.out.println(salutation[0][0] + salutation[1][0]); // Mrs. Kumar System.out.println(salutation[0][1] + salutation[1][0]); > > The output from this program is: Mr. Kumar Mrs. Kumar

В этом примере вы можете видеть объявление двумерного массива, но его первая строка имеет 3 элемента, а вторая строка имеет только один элемент.

Вы можете получить доступ к элементам, используя оба индекса или только один индекс. Например, salutation[0][1] представляет единственную строку в Java, в то время как salutation[0] представляет одномерный.

Пока мы только что объявили и создали массив, но не инициализировали. Здесь можно увидеть значения по умолчанию для различных типов.

boolean[][] booleans = new boolean[2][2]; System.out.println("booleans[0][0] : " + booleans[0][0]); byte[][] bytes = new byte[2][2]; System.out.println("bytes[0][0] : " + bytes[0][0]); char[][] chars = new char[1][1]; System.out.println("chars[0][0] : " + (int)chars[0][0]); short[][] shorts = new short[2][2]; System.out.println("short[0][0] : " + shorts[0][0]); int[][] ints = new int[3][2]; System.out.println("ints[0][0] : " + ints[0][0]); long[][] longs = new long[2][2]; System.out.println("longs[0][0] : " + longs[0][0]); float[][] floats = new float[1][2]; System.out.println("floats[0][0] : " + floats[0][0]); double[][] doubles = new double[2][2]; System.out.println("doubles[0][0] : " + doubles[0][0]); Object[][] objects = new Object[2][2]; System.out.println("objects[0][0] : " + objects[0][0]); Output booleans[0][0] : false bytes[0][0] : 0 chars[0][0] : 0 short[0][0] : 0 ints[0][0] : 0 longs[0][0] : 0 floats[0][0] : 0.0 doubles[0][0] : 0.0 objects[0][0] : null

Массив символов немного сложнее, потому что, если вы печатаете 0 как символ, он напечатает нулевой символ, и поэтому я использовал его целочисленное значение, приведя к int.

Инициализация

Теперь есть два способа инициализировать двумерный массив в Java:

  1. используя литерал массива во время создания.
  2. используя вложенный цикл for.

инициализация 2D array

В следующем примере мы узнаем, как выполнить цикл через двумерный массив, инициализировать каждый элемент и вывести (напечатать).

// initializing two dimensional array as literal String[][] names = < , , , >; int[][] board = new int[3][3]; for (int i = 0; i < board.length; i++) < for (int j = 0; j < board[i].length; j++) < board[i][j] = i + j; >>

Вам понадобится столько циклов, какова размерность массива. Например, для явной инициализации трехмерного массива потребуются три вложенных цикла for. С другой стороны, для инициализации двумерного массива достаточно двух вложенных циклов for.

Как вывести

Если вы хотите получить доступ к каждому элементу, то вам нужно выполнить итерацию по двумерному массиву, используя два цикла for. Почему? Потому что вам нужно два индекса для доступа к отдельному элементу.

Вы можете использовать расширенный для каждого цикла или классический для цикла со счетчиком. Для того, чтобы напечатать(сделать вывод) содержимое 2D массива, вы можете использовать либо этот метод, либо Arrays.deepToString(), который возвращает строку всех элементов.

import java.util.Arrays; /** * Java Program to initialize and print two dimensional array in Java. */ class Basics < public static void main(String args[]) < // initializing two dimensional array as literal String[][] names = < , , , >; // how to initialize two dimensional array in Java // using for loop int[][] board = new int[3][3]; for (int i = 0; i < board.length; i++) < for (int j = 0; j < board[i].length; j++) < board[i][j] = i + j; >> // now let's print a two dimensional array in Java for (int[] a : board) < for (int i : a) < System.out.print(i + "\t"); >System.out.println("\n"); > // printing 2D array using Arrays.deepToString() method System.out.println("another way to print 2D arrays"); System.out.println(Arrays.deepToString(board)); > > Output: 0 1 2 1 2 3 2 3 4 another way to print 2D arrays [[0, 1, 2], [1, 2, 3], [2, 3, 4]]

Сортировка двумерного массива Java

Пусть нам дан двумерный массив Порядка N X M и номер столбца K (1<=K<=m). Наша задача – отсортировать по значениям в столбце K.

Input : If our 2D array is given as (Order 4X4) 39 27 11 42 10 93 91 90 54 78 56 89 24 64 20 65 Sorting it by values in column 3 Output : 39 27 11 42 24 64 20 65 54 78 56 89 10 93 91 90

Универсальный способ сортировки массива заключается в использовании Arrays.sort.

// Java код для сортировки 2D матрицы // по любой колонке import java.util.*; class sort2DMatrixbycolumn < // Function to sort by column public static void sortbyColumn(int arr[][], int col) < // Using built-in sort function Arrays.sort Arrays.sort(arr, new Comparator() < @Override // Compare values according to columns public int compare(final int[] entry1, final int[] entry2) < // To sort in descending order revert // the '>' Operator if (entry1[col] > entry2[col]) return 1; else return -1; > >); // End of function call sort(). > // Driver Code public static void main(String args[]) < int matrix[][] = < < 39, 27, 11, 42 >, < 10, 93, 91, 90 >, < 54, 78, 56, 89 >, < 24, 64, 20, 65 >>; // Sort this matrix by 3rd Column int col = 3; sortbyColumn(matrix, col - 1); // Display the sorted Matrix for (int i = 0; i < matrix.length; i++) < for (int j = 0; j < matrix[i].length; j++) System.out.print(matrix[i][j] + " "); System.out.println(); >> >

Получим:

39 27 11 42
24 64 20 65
54 78 56 89
10 93 91 90

Средняя оценка 3.2 / 5. Количество голосов: 23

Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

Напишите комментарий, что можно добавить к статье, какой информации не хватает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *