Java-stream-filter-Elemente eines bestimmten index

Ich bin auf der Suche nach einer prägnanten Art und Weise heraus zu filtern Elemente einer Liste an einem bestimmten index. Mein Beispiel Eingabe sieht wie folgt aus:

List<Double> originalList = Arrays.asList(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0);
List<Integer> filterIndexes = Arrays.asList(2, 4, 6, 8);

Ich will heraus zu filtern Elemente mit index 2, 4, 6, 8. Ich habe eine for-Schleife überspringt Artikel, die mit dem index, aber ich hatte gehofft, es wäre eine einfache Möglichkeit, es zu tun mit streams. Das Endergebnis würde dann so Aussehen:

List<Double> filteredList = Arrays.asList(0.0, 1.0, 3.0, 5.0, 7.0, 9.0, 10.0);
  • Dies ist unglaublich einfach, mit einem for Schleife und remove(int). Nicht verwenden streams für alles.
  • Danke @PaulBoddington. Aus .NET Arbeit bin ich auf das verwenden von LINQ für die meisten array/Liste der Operationen, und es ist leicht, dies zu tun ist die Verwendung von LINQ so war in der Hoffnung, etwas ähnliches wäre in Java 8 streams
  • Streams und jede Art der Indizierung nicht gut auskommen überhaupt.
  • Diese expliziten array-Erstellung Aussagen wie new Double[] {…} und new Integer[] {…} veraltet sind. Nur verwenden, z.B. List<Integer> filterIndexes = Arrays.asList(2, 4, 6, 8);
  • Ich geschrieben eine Antwort, indem sowohl, remove(int) und Bäche.
InformationsquelleAutor Vedanth | 2016-03-29
Schreibe einen Kommentar