Сегодня мы рассмотрим, как преобразовать массив строк Java в строку. Иногда нам нужно преобразовать массив строк в строку для конкретных требований. Например, мы хотим записать содержимое массива или нам нужно преобразовать значения массива строк в строку и вызвать другие методы.
Преобразование массива строк Java в строку
Большую часть времени мы вызываем метод toString()
объекта, чтобы получить его строковое представление. Давайте посмотрим, что происходит, когда мы вызываем метод toString()
для массива строк в Java.
package com.journaldev.util;
public class JavaStringArrayToString {
public static void main(String[] args) {
String[] strArr = new String[] {"1","2","3"};
String str = strArr.toString();
System.out.println("Java String array to String = "+str);
}
}
На изображении ниже показан вывод, созданный вышеуказанной программой. Причина такого вывода заключается в том, что вызов
toString()
для массива идет в суперкласс Object, где он реализован следующим образом.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Пример преобразования массива строк Java в строку
Как преобразовать массив строк в строку в Java. Мы можем использовать метод Arrays.toString
, который вызывает метод toString() для каждого элемента и использует StringBuilder для создания строки.
public static String toString(Object[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(String.valueOf(a[i]));
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
Мы также можем создать собственный метод для преобразования массива строк в строку, если у нас есть определенные требования к формату. Ниже приведена простая программа, демонстрирующая эти методы в действии и производимый вывод.
package com.journaldev.util;
import java.util.Arrays;
public class JavaStringArrayToString {
public static void main(String[] args) {
String[] strArr = new String[] { "1", "2", "3" };
String str = Arrays.toString(strArr);
System.out.println("Java String array to String = " + str);
str = convertStringArrayToString(strArr, ",");
System.out.println("Convert Java String array to String = " + str);
}
private static String convertStringArrayToString(String[] strArr, String delimiter) {
StringBuilder sb = new StringBuilder();
for (String str : strArr)
sb.append(str).append(delimiter);
return sb.substring(0, sb.length() - 1);
}
}
Так что если мы используем метод
toString()
массива, он возвращает бесполезные данные. Класс Arrays в Java предоставляет toString(Object[] objArr)
, который перебирает элементы массива и использует их реализацию toString()
для возврата строкового представления массива. Поэтому, когда мы используем эту функцию, мы видим, что она печатает содержимое массива, и ее можно использовать для целей ведения журнала. Если вы хотите объединить все элементы строки в массиве строк с определенным разделителем, то вы можете использовать метод convertStringArrayToString(String[] strArr, String delimiter)
, который возвращает строку после их объединения.
Пример преобразования массива Java в строку
Теперь давайте расширим наш пример String array до примера использования с любыми другими пользовательскими классами. Вот его реализация.
package com.journaldev.util;
import java.util.Arrays;
public class JavaArrayToString {
public static void main(String[] args) {
A[] arr = { new A("1"), new A("2"), new A("3") };
// метод toString() по умолчанию
System.out.println(arr.toString());
// использование Arrays.toString() для печати содержимого массива объектов
System.out.println(Arrays.toString(arr));
// преобразование массива объектов в строку
System.out.println(convertObjectArrayToString(arr, ","));
}
private static String convertObjectArrayToString(Object[] arr, String delimiter) {
StringBuilder sb = new StringBuilder();
for (Object obj : arr)
sb.append(obj.toString()).append(delimiter);
return sb.substring(0, sb.length() - 1);
}
}
class A {
private String name;
public A(String name) {
this.name = name;
}
@Override
public String toString() {
System.out.println("A toString() method called!!");
return this.name;
}
}
Выходные данные, полученные вышеуказанной программой примера на Java array to String:
[Lcom.journaldev.util.A;@7852e922
A toString() method called!!
A toString() method called!!
A toString() method called!!
[1, 2, 3]
A toString() method called!!
A toString() method called!!
A toString() method called!!
1,2,3
Таким образом, мы рассмотрели, как преобразовать массив String Java в строку, а затем расширили его для использования с пользовательскими объектами. Вот и все для преобразования массива Java в строку.
Вы можете проверить больше примеров ядра Java в нашем репозитории GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string