Java. Массивы строк. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач

Массивы строк в Java. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач


Содержание




1. Понятие массива строк. Общая форма объявления одномерного массива строк

Как и любой язык программирования, язык программирования Java может реализовывать массивы строк. Любая строка в Java имеет тип String. Одномерный массив строк имеет тип String[]. Двумерный массив строк имеет тип String[][].

Общая форма объявления и выделение памяти для одномерного массива строк

String[] arrayName = new String[size];

где

  • String – встроенный в Java класс, который реализует строку символов. Объект типа String поддерживает большой набор операций, которые можно просмотреть здесь и здесь;
  • arrayName – имя объекта (экземпляра) типа String. Фактически, arrayName есть ссылкой на объект типа String;
  • size – размер массива (количество строк, количество элементов типа String).

Объявление одномерного массива строк и выделение памяти для него можно реализовать и по другому

String[] arrayName;
arrayName = new String[size];

 

2. Каким образом объявляется одномерный массив строк? Пример

Ниже приведен пример объявления и использования одномерного массива строк.

// объявление одномерного массива строк
String[] array = new String[5];

// заполнение начальными значениями
array[0] = "abcd";
array[1] = "Hello";
array[2] = ""; // пустая строка
array[3] = "bestprog";
array[4] = ";:\\+="; // комбинация "\\" заменяется на "\"

// использование в выражениях
arrayS[4] = arrayS[1] + " " + arrayS[3]; // arrayS[4] = "Hello bestprog"
arrayS[4] += ".net"; // arrayS[4] = "Hello bestprog.net"

Как видно из примера, работа с массивами строк в Java есть довольно удобной и не требует сложных дополнительных преобразований на их обработку.

 

3. Двумерный массив строк. Общая форма

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

Общая форма объявления двумерного массива строк следующая:

String[][] matrName = new String[n][m];

где

  • matrName – имя объекта (ссылка на объект), который есть двумерным массивом типа String;
  • n – количество строк в массиве matrName;
  • m – количество столбцов в массиве matrName.

Возможен также другой способ объявления и выделения памяти для двумерного массива строк:

String[][] matrName; // объявление ссылки на двумерный массив строк
matrName = new String[n][m];

 

4. Пример объявления и использования двумерного массива строк

Ниже приведен пример объявления и использования двумерного массива строк

// объявление двумерного массива строк
String[][] matr = new String[2][3];

// заполнение массива значениями
for (int i=0; i<matrS.length; i++)
for (int j=0; j<matrS[i].length; j++)
matrS[i][j] = "matrS[" + i + "][" + j + "]";

// проверка
String s;
s = matrS[0][0]; // s = "matrS[0][0]"
s = matrS[1][1]; // s = "matrS[1][1]"

 

5. Как определяется длина массива строк? Свойство length. Пример

Чтобы определить количество строк в массиве используется свойство length.

Для одномерных массивов количество строк n определяется следующим образом:

String[] arrayS = new String[25];
int n;
n = array.length;

Для двумерных массивов количество строк и столбцов определяется следующим образом

// matr - двумерный массив строк
String[][] matrS = new String[2][3];

int
n, m;
n = matr.length; // n = 2 - количество строк
m = matr[0].length; // m = 3 - количество столбцов
m = matr[1].length; // m = 3

 

6. Как осуществляется инициализация одномерного массива? Пример

Инициализация одномерного массива строк точно такая же как инициализация одномерого массива любого другого типа.

// инициализация одномерного массива строк
String[] M = {
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
};
String s;

s = M[2]; // s = "Tuesday"
s = M[4]; // s = "Thursday"

 

7. Поиск заданной строки в одномерном массиве строк. Пример
// поиск заданной строки в массиве строк
// объявление массива строк
String M[] = new String[5];
String s = "May"; // строка, которую нужно найти
boolean f_is;

// заполнение массива значениями
M[0] = "January";
M[1] = "February";
M[2] = "May";
M[3] = "October";
M[4] = "December";

// поиск строки
f_is = false;
for (int i=0; i<M.length; i++)
if (M[i]==s) {
f_is = true;
break;
}

// вывод результата
if (f_is)
System.out.println("Искомая строка есть в массиве.");
else
System.out.println("Искомой строки нет в массиве.");

 

8. Сортировка одномерного массива строк по алфавиту методом пузырька. Пример

Для сравнения двух строк в лексикографическом порядке в классе String разработан метод compareTo(). Общая форма метода следующая:

int compareTo(вторая_строка)

Метод возвращает

  • <0, если вторая строка следует после первой строки в лексикографическом порядке;
  • =0, если строки одинаковы;
  • >0, если вторая строка следует перед первой в лексикографическом порядке.

Фрагмент, который демонстрирует сортировку массива строк методом пузырька:

// сортировка массива строк методом пузырька
String[] M = {
"abc",
"bde",
"fgh",
"abcd",
"bcdef",
"cdef",
"fghij",
"aaa"
};
String s;

// сортировка
for (int i=0; i<M.length-1; i++)
for (int j=i; j>=0; j--)
if (M[j].compareTo(M[j+1])>0) {
// обменять M[j] и M[j+1] местами
s = M[j];
M[j] = M[j+1];
M[j+1] = s;
}

// вывод результата
for (int i=0; i<M.length; i++)
System.out.println(M[i]);

В результате выполнения вышеприведенного кода, на экран будет выведено следующее

aaa
abc
abcd
bcdef
bde
cdef
fgh
fghij

 

9. Как осуществляется инициализация двумерного массива строк? Пример

Инициализация двумерного массива строк ничем не отличается от инициализации двумерного массива любого примитивного типа. Элементами массива есть обычные строки.

Ниже приведен пример инициализации двумерного массива строк с именем M

// объявление массива M с начальной инициализацией
String M[][] = new {
{ "a1", "a2", "a3" },
{ "b1", "b2", "b3" },
{ "a1", "c2", "a1" }
};

// проверка
String s;
s = M[0][1]; // s = "a2"
s = M[1][0]; // s = "b1"

 

10. Пример подсчета количества вхождений заданной строки в двумерном массиве строк
// вычисление количества вхождений заданной строки в двумерном массиве
// объявление массива M с начальной инициализацией
String M[][] = {
{ "abcd", "abc", "bcd" },
{ "acd", "bcd", "abcd" },
{ "abc", "bc", "cde" }
};

String s = "abc"; // строка, количество вхождений которой нужно вычислить
int k = 0; // количество вхождений, результат
for (int i=0; i<M.length; i++)
for (int j=0; j<M[i].length; j++)
if (M[i][j]==s)
k++;
// k = 2

 

11. Пример замены строки в двумерном массиве строк

Заданы:

  • двумерный массив строк с именем matr;
  • строка s1, которая ищется для замены;
  • строка s2, которая заменяет строку s1.

Разработать программу, которая заменяет строку s1 в матрице matr новой строкой s2. Фрагмент кода, который решает данную задачу:

// объявление двумерного массива строк
String[][] matr = new String[2][3];

// заполнение матрицы matr произвольными значениями
matrS[0][0] = "abc";
matrS[0][1] = "cba";
matrS[0][2] = "def";
matrS[1][0] = "abc";
matrS[1][1] = "fff";
matrS[1][2] = "qqq";

// заполнение значениями строк s1 и s2
String s1 = "abc"; // заменяемая строка
String s2 = "mmm"; // заменяющая строка

// цикл вычисления
for (int i=0; i<matrS.length; i++)
for (int j=0; j<matrS[i].length; j++)
if (matrS[i][j]==s1)
matr[i][j] = s2;

// вывод результата
for (int i=0; i<matrS.length; i++) {
for (int j=0; j<matrS[i].length; j++)
System.out.print(matrS[i][j] + " ");
System.out.println();
}

В результате выполнения вышеприведенного кода, на экран будет выведен следующий результат:

mmm cba   def
mmm fff qqq

 


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