Hallo,
ich versuche gerade Werte einer Liste mit hilfe von Java 8 Streams zu vergleichen. Dabei möchte ich feststellen ob z.B. alle Elemente der Liste Instancen der gleichen Klasse sind, bzw. genauer den gleichen Laufzeittyp haben. (ist eigenlich nicht so wichtig..
) Dabei gehe ich folgendermaßen vor:
1. Definieren eines BiPredicate:
2. Verwenden des Prädikates in einem Stream, ein einer If-Bedingung
Leider bringt mir der Compiler folgenden Syntaxfehler:
The method anyMatch(Predicate<? super Expression>) in the type Stream<Expression> is not applicable for the arguments (boolean)
Das verstehe ich jedoch nicht ganz, da das Prädicat ja einen boolschen Wert zurückliefert.
Evtl. hat jemand eine Idee oder so. Oder vielleicht ein Bsp. wie ich ein BiPredicate sinnvoll einsetze.
Gruß,
reemstar
PS: (Ich will es gerne mit der Streams-API lösen, und nicht extra alle Werte über eine for-loop händisch anfassen)
ich versuche gerade Werte einer Liste mit hilfe von Java 8 Streams zu vergleichen. Dabei möchte ich feststellen ob z.B. alle Elemente der Liste Instancen der gleichen Klasse sind, bzw. genauer den gleichen Laufzeittyp haben. (ist eigenlich nicht so wichtig..
1. Definieren eines BiPredicate:
Java:
BiPredicate<Expression, Expression> typesNotEqual = (Expression exp1, Expression exp2)-> ts
.typeof(exp1, trace) != ts.typeof(exp2, trace);
2. Verwenden des Prädikates in einem Stream, ein einer If-Bedingung
Java:
..
if (sequenceExpressionList.getElement()
.stream()
.anyMatch(typesNotEqual.test(sequenceExpressionList.getElement().stream().findFirst().get(), sequenceExpressionList.getElement().stream().findAny().get())))
..
Leider bringt mir der Compiler folgenden Syntaxfehler:
The method anyMatch(Predicate<? super Expression>) in the type Stream<Expression> is not applicable for the arguments (boolean)
Das verstehe ich jedoch nicht ganz, da das Prädicat ja einen boolschen Wert zurückliefert.
Evtl. hat jemand eine Idee oder so. Oder vielleicht ein Bsp. wie ich ein BiPredicate sinnvoll einsetze.
Gruß,
reemstar
PS: (Ich will es gerne mit der Streams-API lösen, und nicht extra alle Werte über eine for-loop händisch anfassen)