@Princeyesuraj, официальный ответ предоставлен adarshr . Если вы хотите собственный разделитель, вы можете попробовать JoeSlav ответ «S, и если нет проблем нити, вы можете использовать StringBuilder вместо StringBuffer для практичности. Ответ Крока хорош, но, на мой взгляд, немного излишним.
Данте Мэй Код
Ответы:
470
Если вы просто хотите получить дамп массива в стиле отладки:
String str =Arrays.toString(arr);
или, для большего контроля (до Java 8):
StringBuilder builder =newStringBuilder();for(String s : arr){
builder.append(s);}String str = builder.toString();
(Java 8 и выше):
String str =String.join(",", arr);
И если вы идете под углом Android:
String str =TextUtils.join(",", arr);
Вы можете изменить вышеупомянутое в зависимости от того, какие символы, если таковые имеются, вы хотите между строками.
Вы можете увидеть код, почти идентичный коду до Java 8, но использование StringBuffer- StringBuilderэто более новый класс, который не является поточно-ориентированным, но, следовательно, имеет лучшую производительность в одном потоке, потому что устраняет ненужную синхронизацию. Короче говоря, лучше использовать StringBuilderв 99% случаев - по функциональности они идентичны.
НЕ используйте строку и просто добавьте к ней + +, как показано здесь. Это отправляет GC через крышу, потому что вы создаете и выбрасываете столько строковых объектов, сколько у вас есть элементов в вашем массиве. Для небольших массивов вы можете не заметить разницу, но для больших массивов она может быть на несколько порядков медленнее.
Используйте Apache Commons StringUtils.join(). Он принимает массив в качестве параметра (а также имеет перегрузки для Iterableи Iteratorпараметров) и вызывает toString()каждый элемент (если он не нулевой), чтобы получить строковое представление каждого элемента. Каждое строковое представление элементов затем объединяется в одну строку с разделителем между ними, если он указан:
Возвращает строковое представление "глубокого содержимого" указанного массива. Если массив содержит другие массивы в качестве элементов, строковое представление содержит их содержимое и так далее. Этот метод предназначен для преобразования многомерных массивов в строки
Если вам не нужно много контроля, я считаю, что это самое простое решение, так как вам не нужна сторонняя библиотека. Вот пример: System.out.println (Arrays.deepToString (args));
Затем сообщите нам формат, который вы ищете. В противном случае мы не можем угадать, что вы имеете в виду.
Джейсон С
3
Ниже приведен пример преобразования массива в строку.
открытый класс ArrayToString
{
public static void main (аргументы String [])
{
String [] strArray = new String [] {"Java", "PHP", ".NET", "PERL", "C", "COBOL"};
Вы хотите код, который производит строку из arrayList,
Iterate through all elements in list and add it to your String result
Вы можете сделать это двумя способами: используя String как результат или StringBuffer / StringBuilder.
Пример:
String result ="";for(String s : list){
result += s;}
... но это не очень хорошая практика по причине производительности. Лучше использовать StringBuffer (безопасный для потоков) или StringBuilder, которые больше подходят для добавления строк
array.toString()
? Более конкретно.Ответы:
Если вы просто хотите получить дамп массива в стиле отладки:
или, для большего контроля (до Java 8):
(Java 8 и выше):
И если вы идете под углом Android:
Вы можете изменить вышеупомянутое в зависимости от того, какие символы, если таковые имеются, вы хотите между строками.
Вы можете увидеть код, почти идентичный коду до Java 8, но использование
StringBuffer
-StringBuilder
это более новый класс, который не является поточно-ориентированным, но, следовательно, имеет лучшую производительность в одном потоке, потому что устраняет ненужную синхронизацию. Короче говоря, лучше использоватьStringBuilder
в 99% случаев - по функциональности они идентичны.НЕ используйте строку и просто добавьте к ней + +, как показано здесь. Это отправляет GC через крышу, потому что вы создаете и выбрасываете столько строковых объектов, сколько у вас есть элементов в вашем массиве. Для небольших массивов вы можете не заметить разницу, но для больших массивов она может быть на несколько порядков медленнее.
источник
Arrays.toString(yourArray);
но я думаю, что вы использовалиyourArray.toString();
1.8
вы также можете использоватьString::join
вместо цикла for.String.join("", arr);
Используйте Apache Commons
StringUtils.join()
. Он принимает массив в качестве параметра (а также имеет перегрузки дляIterable
иIterator
параметров) и вызываетtoString()
каждый элемент (если он не нулевой), чтобы получить строковое представление каждого элемента. Каждое строковое представление элементов затем объединяется в одну строку с разделителем между ними, если он указан:Производит:
источник
Мне нравится использовать Google Guava Joiner для этого, например:
будет производить ту же строку, что и:
ETA: Java 8 теперь имеет аналогичную поддержку:
Не вижу поддержки для пропуска нулевых значений, но это легко обойти.
источник
null
был бы «тот, чье имя не должно быть упомянуто» :-)Joiner.on(", ").useForNull("Voldemort").join("Harry", null, "Ron", "Hermione");
String.join(", ", "Harry", null, "Ron", "Hermione").replaceAll("null", "Voldermart");
Вы можете сделать это, учитывая массив
a
примитивного типа:источник
Начиная с Java 8, я думаю, что проще всего:
Таким образом, вы можете выбрать произвольный разделитель.
источник
Попробуйте метод Arrays.deepToString .
Возвращает строковое представление "глубокого содержимого" указанного массива. Если массив содержит другие массивы в качестве элементов, строковое представление содержит их содержимое и так далее. Этот метод предназначен для преобразования многомерных массивов в строки
источник
Попробуйте перегруженные методы Arrays.toString .
Или, попробуйте это ниже общей реализации:
источник
Ниже приведен пример преобразования массива в строку.
источник
Если у вас нет выбора, кроме как использовать Java 6 или 7, тогда вы должны использовать Divide & Conquer join.
источник
Вы хотите код, который производит строку из arrayList,
Вы можете сделать это двумя способами: используя String как результат или StringBuffer / StringBuilder.
Пример:
... но это не очень хорошая практика по причине производительности. Лучше использовать StringBuffer (безопасный для потоков) или StringBuilder, которые больше подходят для добавления строк
источник
Используйте метод присоединения библиотеки StringUtils Apache Commons .
источник
источник
Если вы знаете, сколько элементов в массиве, это можно сделать простым способом:
источник