Hat Java SE 8 Paare oder Tupel?Java

Java-Forum
Guest
 Hat Java SE 8 Paare oder Tupel?

Post by Guest »

Ich spiele mit faulen Funktionsvorgängen in Java SE 8 herum, und ich möchte einen Index i einem Paar/Tupel (i, value ) , abbilden, , Dann filtern Sie basierend auf dem zweiten Wert und schließlich nur die Indizes aus. das Äquivalent der C ++ Paar in Java? In der kühnen neuen Ära von Lambdas und Streams? In einer der Antworten unten. Es wird jedoch nicht verallgemeinert. Lassen Sie mich daher ein allgemeineres Beispiel hinzufügen: < /p>

Code: Select all

package com.example.test;

import java.util.ArrayList;
import java.util.stream.IntStream;

public class Main {

public static void main(String[] args) {
boolean [][] directed_acyclic_graph = new boolean[][]{
{false,  true, false,  true, false,  true},
{false, false, false,  true, false,  true},
{false, false, false,  true, false,  true},
{false, false, false, false, false,  true},
{false, false, false, false, false,  true},
{false, false, false, false, false, false}
};

System.out.println(
IntStream.range(0, directed_acyclic_graph.length)
.parallel()
.mapToLong(i -> IntStream.range(0, directed_acyclic_graph[i].length)
.filter(j -> directed_acyclic_graph[j][i])
.count()
)
.filter(n -> n == 0)
.collect(() -> new ArrayList(), (c, e) -> c.add(e), (c1, c2) -> c1.addAll(c2))
);
}

}
Dies ergibt Falsch Ausgabe von [0, 0, 0] , was den -Zählungen entspricht Für die drei Spalten, die alle false sind. Was ich brauche, sind die Indizes dieser drei Spalten. Die korrekte Ausgabe sollte [0, 2, 4] sein. Wie kann ich dieses Ergebnis erzielen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post