-, , .
, JDK. zip, Tuples, , , :
Stream[] streams = Stream.of(
Stream.of("A", "B", "C"),
Stream.of("X", "Y", "Z"),
Stream.of("0", "1", "2"))
.toArray(Stream[]::new);
String[][] arrays = Arrays.stream(streams)
.map(s -> s.toArray(String[]::new))
.toArray(String[][]::new);
int minSize = Arrays.stream(arrays)
.mapToInt(s -> s.length)
.min().orElse(0);
String[][] zipped = IntStream.range(0, minSize)
.mapToObj(i -> Arrays.stream(arrays)
.map(s -> s[i])
.toArray(String[]::new))
.toArray(String[][]::new);
-, - , .
-, , , , zip, , .
-, zipping (IntStream.range(0, minSize)) .
.get() on , minSize , - .
, , :
List<List<String>> lists = Arrays.asList(
Arrays.asList("A", "B", "C"),
Arrays.asList("X", "Y", "Z"),
Arrays.asList("0", "1", "2"));
final int minSize = lists.stream()
.mapToInt(List::size)
.min().orElse(0);
List<List<String>> result = IntStream.range(0, minSize)
.mapToObj(i -> lists.stream()
.map(s -> s.get(i))
.collect(Collectors.toList()))
.collect(Collectors.toList());
API Java 9 Stream API, , minSize.
, lazy, :
IntStream.range(0, minSize)
.mapToObj(i -> lists.stream()
.map(s -> s.get(i))
.collect(Collectors.toList()));