Автор оригинала: Pankaj Kumar.
Массив строк Java используется для хранения фиксированного количества строк. Строка массив очень распространен в простых java-программах , особенно среди новичков в java и для тестирования некоторых конкретных сценариев. Даже основной метод java аргумент является строковым массивом – public static void main(String[] args) . Поэтому сегодня мы рассмотрим различные аспекты массива строк java на примерах программ.
- Массив строк Java – это в основном массив объектов.
- Существует два способа объявления массива строк – объявление без размера и объявление с размером.
- Существует два способа инициализации массива строк – во время объявления, заполнение значений после объявления.
- Мы можем выполнять различные виды обработки строкового массива, такие как итерация, сортировка, поиск и т.д.
Давайте теперь рассмотрим примеры программ с массивом строк 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 class equals() проверяет наличие значений. Для получения более подробной информации, пожалуйста, ознакомьтесь с документацией API класса строк.
Итерация по массиву строк java
Мы можем перебирать массив строк, используя java для цикла или java для цикла.
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
Мы можем реализовать наш собственный алгоритм сортировки, или мы можем использовать метод сортировки классов массивов.
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]
Обратите внимание, что строка реализует сопоставимый интерфейс, поэтому она работает для естественной сортировки. В случае, если вы хотите выполнить сортировку каким-либо другим способом, вы можете использовать Arrays.sort() перегруженный метод, передав компаратор. Узнайте об этих методах сортировки в Comparable и Comparator на java .
Преобразование строки в массив строк
Мы можем преобразовать строку в массив строк, используя метод 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() для преобразования массива строк в строку. Обратите внимание, что массив не реализует метод 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]
Первый вывод связан с реализацией toString() класса объектов, как показано ниже.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Массив строк Java для перечисления
Мы можем получить представление списка строкового массива, используя Массивы.тоЛист() Метод. Обратите внимание, что этот список поддерживается массивом, и любая структурная модификация приведет к java.lang.Исключение UnsupportedOperationException .
String[] vowels = { "a", "e", "i", "o", "u", "a", "o" };
List 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 по массивам