2013-10-08 3 views
0

Есть ли элегантный способ (элегантный смысл без итератора или цикла) для печати каждого члена объекта Java List<Sting> в строку, разделенную запятой?Какой самый элегантный/лаконичный способ печати всех строк в списке в одну строку?

Например, версия Явы из в Perl my $allElementsString = join(",", @myStrings);

Я проверил интерфейс List и не нашел ничего перспективных (моя догадка была использовать toArray, а затем массива toString?)

+2

'List.toString()' возвратит comma- но он будет содержать фигурные скобки на конце. –

+0

@zch - возможно, более близким является http://stackoverflow.com/questions/63150/whats-the-best-way-to-build-a-string-of-delimited-items-in-java – DVK

ответ

1

если список Строки затем просто распечатать его:

System.out.println(yourList); 

Если список пользовательских объектов, то убедитесь, что вы перекрываться toString методом в пользовательском классе для печати ЛИСА t правильно.

0

Не в JDK, а есть guava и другие библиотеки коммунальных услуг также предлагают аналогичные решения.

4

В JDK ничего не делается, чтобы сделать это напрямую. Вы можете реализовать свой собственный столяра с StringBuilder или использовать 3rd библиотеку партии как гуавы

List<String> string = ...; 
String list = Joiner.on(",").join(string); 
0

Неа. Любой метод toString, который вы можете применить к списку или массиву, не будет отформатирован каким-либо значимым образом.

0

Либо использовать Guava как уже указывалось, или Apache Common-х StringUtils:

StringUtils.join(list, ","); 
1

Я думаю, что большинство людей используют Apache Commons' StringUtils:

List<String> yourStrings = /* something */; 
String commaSeperated = StringUtils.join(yourStrings, ','); 

Apache Commons libraries очень удобно. Я бы рекомендовал посмотреть на них (или на Google Guava).

1

Что-то вроде этого:

List<String> list = new ArrayList<>(); 
list.add("1"); 
list.add("2"); 
list.add("3"); 
String result = list.toString().substring(1, list.toString().length() - 1); 
System.out.println(result); 

ВЫВОД:

1, 2, 3 
+0

Написание его как однострочный платеж не выплачивается дважды с вызовом 'list.toString()', особенно в реальном коде, где список может быть большим. Наличие еще одной строки кода для локальной переменной не так уж плохо. – Holger

Смежные вопросы