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[] arrayS = new String[5];

// заповнення початковими значеннями
arrayS[0] = "abcd";
arrayS[1] = "Hello";
arrayS[2] = ""; // пустий рядок
arrayS[3] = "bestprog";
arrayS[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[][] matrS = 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 = arrayS.length;

Для двовимірних масивів кількість рядків та стовпців визначається наступним чином

// matrS - двовимірний масив рядків
String[][] matrS = new String[2][3];

int n, m;
n = matrS.length; // n = 2 - кількість рядків
m = matrS[0].length; // m = 3 - кількість стовпців
m = matrS[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. Приклад заміни рядка у двовимірному масиві рядків

Задано:

  • двовимірний масив рядків з іменем matrS;
  • рядок, який шукається для заміни s1;
  • рядок s2, який замінює рядок s1.

Розробити програму, що замінює рядок s1 в матриці matrS новим рядком s2. Фрагмент коду, що розв’язує дану задачу:

// оголошення двовимірного масиву рядків
String[][] matrS = new String[2][3];

// заповнення матриці matrS довільними значеннями
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"; // рядок, яким заміняється рядок s1

// цикл обчислення
for (int i=0; i<matrS.length; i++)
    for (int j=0; j<matrS[i].length; j++)
        if (matrS[i][j]==s1)
            matrS[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

 


Зв’язані теми