Question: This solution prints 3 rows of data. The question is How to remove nested for loop and replace it with stream api. import java.io.IOException; import
This solution prints 3 rows of data. The question is How to remove nested for loop and replace it with stream api.
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; public class FilterExample { public static void main(String[] args) { int numCols = 3; // number of columns to display List lines = new ArrayList<>(); try { lines = Files.readAllLines(Paths.get("input.txt")); } catch (IOException e) { e.printStackTrace(); } int numRows = (int) Math.ceil((double) lines.size() / numCols); List finalLines = lines; List> columns = IntStream.range(0, numCols) .mapToObj(i -> finalLines.subList(i * numRows, Math.min((i + 1) * numRows, finalLines.size()))) .collect(Collectors.toList()); for (int i = 0; i < numRows; i++) { for (int j = 0; j < numCols; j++) { List column = columns.get(j); if (i < column.size()) { System.out.printf("%-30s", column.get(i)); } else { System.out.print(" "); } } System.out.println(); } } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
