Автор оригинала: Pankaj Kumar.
Сегодня мы рассмотрим, как преобразовать массив строк 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()
массива приведет к суперклассу объектов, где он реализован, как показано ниже.
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); } }
Поэтому, если мы используем метод array toString ()
, он возвращает бесполезные данные.
Класс массивов Java предоставляет toString(Object[] objArr)
, который выполняет итерацию по элементам массива и использует их реализацию toString()
для возврата строкового представления массива. Вот почему, когда мы используем эту функцию, мы видим, что она печатает содержимое массива и может использоваться для ведения журнала.
Если вы хотите объединить все строковые элементы в массиве строк с определенным разделителем, вы можете использовать convertStringArrayToString(String[] strArr, разделитель строк)
метод, который возвращает строку после их объединения.
Пример преобразования массива Java в строку
Теперь давайте расширим наш строковый массив до строкового примера для использования с любыми другими пользовательскими классами, вот реализация.
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") }; // default toString() method System.out.println(arr.toString()); // using Arrays.toString() for printing object array contents System.out.println(Arrays.toString(arr)); // converting Object Array to String 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
Поэтому мы рассмотрели, как преобразовать массив строк Java в строку, а затем расширили его для использования с пользовательскими объектами. Это все для преобразования массива java в строку.
Ссылка: Java Массивы toString API Doc