Поиск по сайту:

Массив строк Java


Массив строк Java используется для хранения фиксированного количества строк. Основным аргументом метода java является массив строк - public static void main(String[] args). Итак, сегодня мы рассмотрим различные аспекты массива строк Java с примерами программ.

  • Массив Java String в основном представляет собой массив объектов.
  • Существует два способа объявить строковый массив: объявить без размера и объявить с размером.
  • Инициализировать строковый массив можно двумя способами: во время объявления и заполнение значениями после объявления.
  • Мы можем выполнять различные виды обработки массива строк, такие как итерация, сортировка, поиск и т. д.

Теперь давайте рассмотрим примеры программ массива строк Java.

Объявление массива строк Java

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

String[] strArray; //declare without size

String[] strArray1 = new String[3]; //declare with size

Обратите внимание, что мы также можем записать массив строк как String strArray[], но выше показано, что это стандартный и рекомендуемый способ. Также в приведенном выше коде strArray имеет значение null, тогда как значение strArray1 равно [null, null, null].

Инициализация массива строк Java

Давайте рассмотрим разные способы инициализации строкового массива в java.

//inline initialization
String[] strArray1 = new String[] {"A","B","C"};
String[] strArray2 = {"A","B","C"}; 

//initialization after declaration
String[] strArray3 = new String[3];
strArray3[0] = "A";
strArray3[1] = "B";
strArray3[2] = "C";

Все три массива строк будут иметь одинаковые значения. Однако, если вы вызовете для них метод equals, он вернет false.

System.out.println(strArray1.equals(strArray2)); // false
System.out.println(Arrays.toString(strArray1).equals(Arrays.toString(strArray2)));// true

Причина в том, что массив представляет собой объекты, а класс объектов реализует метод equals(), как показано ниже.

public boolean equals(Object obj) {
        return (this == obj);
    }

Второе утверждение верно, потому что при преобразовании в String их значения совпадают, а реализация метода equals() класса String проверяет значения. Дополнительные сведения см. в документации по API класса String.

Итерация по массиву строк Java

Мы можем перебирать массив строк, используя цикл java foreach.

String[] strArray2 = {"A","B","C"}; 
for (int i = 0; i < strArray2.length; i++) {
	System.out.print(strArray2[i]);
}

for (String str : strArray2) {
	System.out.print(str);
}

Поиск строки в массиве строк

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

package com.journaldev.stringarray;

public class JavaStringArrayExample {

	public static void main(String[] args) {
		String[] strArray = { "A", "B", "C" };
		
		boolean found = false;
		int index = 0;
		String s = "B";
		for (int i = 0; i < strArray.length; i++) {
			if(s.equals(strArray[i])) {
				index = i; found = true; break;
			}
		}
		if(found)
			System.out.println(s +" found at index "+index);
		else
			System.out.println(s +" not found in the array");
		
	}

}

Обратите внимание на использование ключевого слова break для выхода из цикла, как только мы нашли строку.

Сортировка массива строк Java

Мы можем реализовать собственный алгоритм сортировки или использовать метод сортировки класса Arrays.

String[] vowels = {"a","i","u","e","o"};
		
System.out.println("Before sorting "+Arrays.toString(vowels));

Arrays.sort(vowels);
		
System.out.println("After sorting "+Arrays.toString(vowels));

Вывод приведенного выше фрагмента кода будет:

Before sorting [a, i, u, e, o]
After sorting [a, e, i, o, u]

Обратите внимание, что String реализует интерфейс Comparable, поэтому он работает для естественной сортировки. Если вы хотите отсортировать каким-либо другим способом, вы можете использовать перегруженный метод Arrays.sort(), передав Comparator. Узнайте об этих методах сортировки в Comparable и Comparator в java.

Преобразование строки в массив строк

Мы можем преобразовать String в массив строк, используя его метод split(). Это полезно, когда вы получаете одну строку в качестве входных данных со значениями, разделенными с помощью символа-разделителя.

String str = "a,e,i,o,u";
String[] vowels = str.split(",");
System.out.println(Arrays.toString(vowels)); //[a, e, i, o, u]

Преобразование строкового массива в строку

Мы можем использовать метод Arrays.toString() для преобразования массива String в String. Обратите внимание, что массив не реализует метод toString(), поэтому, если вы попытаетесь получить его строковое представление, вам придется полагаться на класс Arrays или написать свой собственный код.

String[] vowels = { "a", "e", "i", "o", "u" };
System.out.println(vowels);
System.out.println(Arrays.toString(vowels));

Вывод будет таким, как показано ниже.

[Ljava.lang.String;@3d04a311
[a, e, i, o, u]

Первый вывод связан с реализацией класса Object toString(), как показано ниже.

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

Массив строк Java для списка

Мы можем получить представление массива строк в виде списка, используя метод Arrays.toList(). Обратите внимание, что этот список поддерживается массивом, и любая структурная модификация приведет к java.lang.UnsupportedOperationException.

String[] vowels = { "a", "e", "i", "o", "u", "a", "o" };

List<String> vowelsList = Arrays.asList(vowels);
System.out.println("vowelsList = "+vowelsList);
//vowelsList.add("x"); //java.lang.UnsupportedOperationException

vowelsList.set(0, "x"); //allowed because no structural modification
System.out.println("vowelsList = "+vowelsList);

Это все, что касается строкового массива Java. Ссылка: Документация по массивам Oracle