Массив строк 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