tengo la siguiente lista:
var list = Arrays.asList("a", "b", "c");Quiero lograr algo como eso:
// "a, " // "b, " // "c"Así que hice eso:
var formattedList = list.stream() .map(el -> el + ", ") .collect(Collectors.toList());Está funcionando casi bien:
// "a, " // "b, " // "c, "pero como puede ver, no sé cómo "omitir" el último elemento en mi transmisión.
¿Alguien podría ayudarme a lograr eso?
La respuesta de Taha es excelente si tiene una lista, pero si para algún caso de uso tiene una transmisión, simplemente puede hacerlo.
String result = list.stream() .collect(Collectors.joining(","));Podría usar .limit() para limitar los elementos de la lista original que se transmiten:
Stream.concat( list.stream().map(el -> el + ", ").limit(list.size() - 1), Stream.of(list.get(list.size() - 1))) .collect(Collectors.toList());Puedes usar String.join()
var list = Arrays.asList("a", "b", "c"); String.join(",", list) // returns a,b,cSupuse que querías unirte a los elementos. Pero si no lo hace, creo que stream api no es adecuado para esto. El iterador tradicional funcionaría mejor. Porque su requisito se basa en el índice del elemento. En las secuencias, no se proporciona información de índice.