Как при помощи стримов/лямб вывести элементы массива/списка JAVA

206
16 июля 2018, 05:50

Есть массив:

Integer[] sums = new Integer[5];

предварительно уже заполненный элементами.

Для вывода элементов c новой строки при помощи функицонала Java8 используется:

Arrays.stream(sums).forEach(System.out::println);

Как сделать вывод,например, в одну строку, через запятую(после последнего элемента ничего) при помощи java8?

В одну строку print, добавить запятую внутри forEach, судя по всему, нельзя. Так еще нужно проверить условие на последний элемент.

Answer 1

Ну, стримы созданы для преобразования каждого отдельного элемента, независимо от предыдущих. Поэтому с проверкой последнего ничего не выйдет, если не костылизировать через limit и skip с созданием второй копии стрима.

Если нужен именно стрим, то я предложу только такой вариант:

System.out.println(Arrays.stream(sums)
    .map(String::valueOf)
    .collect(Collectors.joining(", "))
);
Answer 2

Можно, например, так:

System.out.println(Arrays.stream(sums).map(String::valueOf).collect(Collectors.joining(",")));
Answer 3

Конечно, костыльный метод, но могу предложить:

String tmp =""+sums[0];
for(int i=1; i<5; i++){
    tmp+=", "+sums[i];
}
System.out.print(tmp);
READ ALSO
Android: как сделать неубиваемый сервис

Android: как сделать неубиваемый сервис

Господа! Прошу помощи!

628
Android выгрузить библиотеку

Android выгрузить библиотеку

В onCreate загружаю библиотеку SystemloadLibrary("name")

322
IntellIJ IDEA не учитывает модель в JSP-шаблоне

IntellIJ IDEA не учитывает модель в JSP-шаблоне

IntellIJ IDEA JSP не видит объекты, которые я передаю из контроллера

230