- Массив строк Java
- Объявление массива строк Java
- Инициализация массива строк Java
- Итерация по массиву строк java
- Поиск строки в массиве строк
- Сортировка массива строк Java
- Преобразование строки в массив строк
- Преобразование массива строк в строку
- Массив строк Java для перечисления
- Читайте ещё по теме:
- Java android массив строк
- Форматирование строк
- Ресурсы Plurals
- string array
Массив строк Java
Массив строк Java, объявление массива строк в java, преобразование массива в строку java, преобразование строки в массив java, сортировка массива строк java, инициализация массива строк java, строка массива java, преобразование массива строк в список, примеры программ массива строк java.
Массив строк 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[] ; String[] strArray2 = ; //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)
Второе утверждение верно, потому что при преобразовании в строку их значения совпадают, а реализация метода String class equals() проверяет наличие значений. Для получения более подробной информации, пожалуйста, ознакомьтесь с документацией API класса строк.
Итерация по массиву строк java
Мы можем перебирать массив строк, используя java для цикла или java для цикла.
String[] strArray2 = ; for (int i = 0; i < strArray2.length; i++) < System.out.print(strArray2[i]); >for (String str : strArray2)
Поиск строки в массиве строк
Мы можем использовать цикл 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 = ; 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() класса объектов, как показано ниже.
Массив строк Java для перечисления
Мы можем получить представление списка строкового массива, используя Массивы.тоЛист() Метод. Обратите внимание, что этот список поддерживается массивом, и любая структурная модификация приведет к java.lang.Исключение UnsupportedOperationException .
Читайте ещё по теме:
Java android массив строк
Ресурсы строк — один из важных компонентов приложения. Мы используем их при выведении названия приложения, различного текста, например, текста кнопок и т.д.
XML-файлы, представляющие собой ресурсы строк, находятся в проекте в папке res/values . По умолчанию ресурсы строк находятся в файле strings.xml , который может выглядеть следующим образом:
В самом простом виде этот файл определяет один ресурс «app_name», который устанавливает название приложения, которое мы видим в заголовке приложения на экране устройства. Но естественно мы можем определить любые строковые ресурсы. Каждый отдельный ресурс определяется с помощью элемента string , а его атрибут name содержит название ресурса.
Затем в приложении в файлах кода мы можем ссылаться на эти ресурсы:
String application_name = getResources().getString(R.string.app_name);
Например, изменим файл res/values/strings.xml следующим образом:
Здесь добавлен ресурс message со значением «Hello Android!».
Теперь используем ресурс в файле activity_main.xml:
С помощью выражения @string/message передаем атрибуту android:text значение из ресурса.
Аналогично мы могли бы использовать ресурс в коде Activity:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // получаем элемент textView TextView textView = findViewById(R.id.textView); // переустанавливаем у него текст textView.setText(R.string.message); >>
Если нам в принципе надо получить ресурс в коде Java (необязательно для установки текста в TextView), то в этом случае можно использовать метод getResources().getString(идентификатор_ресурса)
String message = getResources().getString(R.string.message);
Хотя по умолчанию для ресурсов строк применяется файл strings.xml, но разработчики могут добавлять дополнительные файлы ресурсов в каталог проекта res/values . При этом достаточно соблюдать структуру файла: он должен иметь корневой узел и иметь один или несколько элементов .
Так, нажмем на папку res/values правой кнопкой мыши и в появившемся списке выберем пункт New -> Value Resource File :
Причем следует отметить, что данный тип файлов будет характерен для любого типа ресурсов, который добавляется в папку res/values .
После этого нам будет предложено определить для файла имя:
Назовем, к примеру, headers (название файла произвольное), а для всех остальных полей оставим значения по умолчанию. И в папку res/values будет добавлен новый файл headers.xml. Определим в нем пару ресурсов:
Добро пожаловать Нажмите на кнопку
И после этого мы сможем использовать определенные здесь ресурсы в коде Activity или в файле layout.
Форматирование строк
Android позволяет применять к ресурсам строк форматирование. Например, изменим файл strings.xml:
ViewApp Hello Android! Добро пожаловать %1$s! Уже %2$d : %3$d
Третий ресурс — welcome_message представляет строку с форматированием. Так, она содержит такие символы как %1$s, %2$d и %3$d. Что они означают? %1$s указывает, что это первый аргумент, а символ «s» говорит, что этот аргумент представляет строку. %2$d представляет второй аргумент, а символ «d» в конце указывает, что это будет целое число. Аналогично %3$d указывает, что это третий аргумент, который представляет целое число.
Получим ресурс в коде Java
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.content.res.Resources; import android.os.Bundle; import android.widget.TextView; import java.util.Calendar; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); Resources res = getResources(); String userName = "Евгений"; Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); String text = getString(R.string.welcome_message, userName, hour, minute); TextView textView = new TextView(this); textView.setText(text); textView.setTextSize(28); setContentView(textView); >>
Метод getString(R.string.welcome_message, userName, hour, minute) получает ресурс welcome_message и в качестве последующих параметров передает его аргументам значения. Для первого аргумента-строки используется переменная userName, а для второго и третьего аргументов передаем текущее количество часов и минут, полученных с помощью класса Calendar.
Ресурсы Plurals
Plurals представляют еще один вид набора строк. Он предназначен для описания количества элементов. Для чего это надо? К примеру, возьмем существительное: нередко оно изменяет окончание в зависимости от числительного, которое с ним употребляется: 1 цветок, 2 цветка, 5 цветков. Для подобных случаев и используется ресурс plurals .
Посмотрим на примере. Добавим в папку res/values новый ресурс. Назовем его flowers :
Изменим его содержимое следующим образом:
- %d цветок
- %d цветка
- %d цветков
Для задания ресурса используется элемент , для которого существует атрибут name , получающий в качестве значения произвольное название, по которому потом ссылаются на данный ресурс.
Сами наборы строк вводятся дочерними элементами . Этот элемент имеет атрибут quantity , который имеет значение, указывающее, когда эта строка используется. Данный атрибут может принимать следующие значения:
- zero : строка для количества в размере 0
- one : строка для количества в размере 1 (для русского языка — для задания всех количеств, оканчивающихся на 1, кроме 11)
- two : строка для количества в размере 2
- few : строка для небольшого количества
- many : строка для больших количеств
- other : все остальные случаи
Причем в данном случае многое зависит от конкретного языка. А система сама позволяет определить, какое значение брать для того или иного числа.
Использование данного ресурса возможно толко в коде java. Поэтому изменим код MainActivity:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); String rose = getResources().getQuantityString(R.plurals.flowers, 21, 21); TextView textView = new TextView(this); textView.setText(rose); textView.setTextSize(26); setContentView(textView); >>
С помощью метода getQuantityString мы получаем значение ресурса. Первым параметром передаем идентификатор ресурса. Вторым параметром идет значение. для которого нужно найти нужную строку. Третий параметр представляет собой значение, которое будет вставляться на место плейсхолдера %d . То есть мы получаем строку для числа 21.
string array
Еще одним видом строковых ресурсов является string-array или массив строк. Например, добавим в папку res/values новый файл, который назовем languages.xml :
Пусть он будет содержать следующий код:
Ресурс задается с помощью элемента . Фактически он определяет набор строк. А каждая отдельная строка задается с помощью элемента
В файле MainActivity.java определим код для получения значений из этого ресурса:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.content.res.Resources; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); Resources res = getResources(); String[] languages = res.getStringArray(R.array.languages); String allLangs = ""; for (String lang: languages) < allLangs += lang + " "; >TextView textView = new TextView(this); textView.setText(allLangs); textView.setTextSize(28); setContentView(textView); > >
С помощью метода getStringArray получаем ресурс в массив строк и затем с помощью цикла складдываем из массива одну строку и передаем ее в TextView.