Gibt es eine übersichtliche Möglichkeit, einen Stream mit Indizes in Java 8 zu durchlaufen?

Gibt es eine übersichtliche Möglichkeit, über einen Stream zu iterieren, während auf den Index im Stream zugegriffen werden kann?

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());

was im Vergleich zu dem dort gegebenen LINQ-Beispiel eher enttäuschend erscheint

string[] names = { "Sam", "Pamela", "Dave", "Pascal", "Erik" };
var nameList = names.Where((c, index) => c.Length <= index + 1).ToList();

Gibt es einen präziseren Weg?

Weiterhin scheint der Reißverschluss entweder verschoben oder entfernt worden zu sein ...

Antworten auf die Frage(17)

Ihre Antwort auf die Frage