es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Java Stream 8, cada sexta palabra imprimir en nueva línea

public class Histograma {
public static void main(String[] args) throws IOException {
Stream stream = Files.lines(Paths.get(“palabras.txt”));
ArrayList lista = (ArrayList) stream
.map(palabra -> palabra.split(“\.|\s+|,”)).flatMap(Arrays::stream)
.filter(palabra -> palabra.length() != 0)
.collect(Collectors.toList());
int i = 1;
for(String palabra : lista) {
System.out.print(palabra + “(” + palabra.length() + “) “);
if(i%5 == 0) {
System.out.println();
}
i++;
}
}
}

Ahora todos los resultados están en una línea.
¿Cómo puedo hacer lógica en este flujo de Java 8 para poner cada 5 palabras del bucle forEach en una nueva línea (System.out.println)?
Cada sexta palabra se imprime en una nueva línea.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    java
    public class Histograma {
    public static void main(String[] args) throws IOException {
    Stream<string> stream = Files.lines(Paths.get("words.txt"));
    ArrayList<string> lista = (ArrayList<string>) stream
    .map(w -> w.split("\\.|\\s+|,")).flatMap(Arrays::stream)
    .filter(x -> x.length() != 0)
    .collect(Collectors.toList());
    AtomicInteger contador = new AtomicInteger(0);
    lista.forEach(s -> {
    System.out.print(s + "(" + s.length() + ") ");
    if (contador.incrementAndGet() % 6 == 0) {
    System.out.println();
    }
    });
    }
    }

Comments are closed.