Лучший способ преобразовать числовой массив в строку CSV?

#java #csv #java-8

#java #csv #java-8

Вопрос:

Если у меня есть String[] (предположим, без запятых) Я могу просто создать строку CSV. Например.,

 String[] header = {"header0", "header1", "header2"};
String joined = String.join(",", header);
  

Какой хороший способ сделать эквивалент с помощью say int[] vals01 = {0, 1, 2}; ? (Я считаю, что использовать Arrays.toString и обрезать концы некрасиво.)

Ответ №1:

Это можно сделать с помощью Streams API в однострочном:

 Arrays.stream(new int[] {0, 1, 2}).mapToObj(String::valueOf).collect(joining(","));
  

(предполагается import static java.util.stream.Collectors.joining )

Ответ №2:

Рассмотрите возможность использования нового (Java 8) StringJoiner.

Для String[] :

 String[] header = {"header0", "header1", "header2"};
StringJoiner joiner = new StringJoiner(",");
Arrays.stream(header).forEach(joiner::add);
String joined = joiner.toString();
  

Для случая int[] :

 int[] ints = {1, 2, 3};
StringJoiner joiner = new StringJoiner(",");
Arrays.stream(ints).forEach(i -> joiner.add(Integer.toString(i)));
String joined = joiner.toString();
System.out.println(joined);