Есть ли сжатый способ перебора потока, имея доступ к индексу в потоке?Есть ли сжатый способ перебора потока с индексами в Java 8?
String[] names = {"Sam","Pamela", "Dave", "Pascal", "Erik"};
List<String> nameList;
Stream<Integer> indices = intRange(1, names.length).boxed();
nameList = zip(indices, stream(names), SimpleEntry::new)
.filter(e -> e.getValue().length() <= e.getKey())
.map(Entry::getValue)
.collect(toList());
, который кажется довольно разочаровывающим по сравнению с примером, LINQ приведенные там
string[] names = { "Sam", "Pamela", "Dave", "Pascal", "Erik" };
var nameList = names.Where((c, index) => c.Length <= index + 1).ToList();
Есть ли более краткий путь?
Далее кажется почтовым имеют либо перемещены или удалены ...
Что такое 'intRange()'? Не дошли до этого метода на Java 8 до сих пор. –
@RohitJain Вероятно, 'IntStream.rangeClosed (x, y)'. – assylias
В качестве побочного комментария задача 4 выглядит лучше (IMO) с «List allCities = map.values (). Stream(). FlatMap (list -> list.stream()). Collect (Collectors.toList()); ' –
assylias