private void func(Object o) {
Predicate> pred = m -> true;
if (o instanceof Map && pred.test((Map, ?>) o)) {
// ...pred.test is OK
} else if (o instanceof Collection && ((Collection>) o).stream().filter(i -> i instanceof Map).map(i -> (Map, ?>) i).anyMatch(pred)) {
// ...anyMatch now works
}
}
private void func(Object o) {
Predicate> pred = m -> true;
if (o instanceof Map && pred.test((Map, ?>) o)) {
// ...pred.test is OK
} else if (o instanceof Collection && ((Collection>) o).stream()
.>mapMulti((i, consumer) -> {
if (i instanceof Map m) consumer.accept(m);
})
.anyMatch(pred)) {
// ...anyMatch now works
}
}
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
public class StreamPredicateExample {
private void funcWithMap(Object o) {
Predicate> pred = m -> true;
if (o instanceof Map && pred.test((Map, ?>) o)) {
System.out.println("Direct Map test OK");
} else if (o instanceof Collection) {
boolean anyMatch = ((Collection>) o).stream()
.filter(i -> i instanceof Map)
.map(i -> (Map, ?>) i) // Using map for type conversion
.anyMatch(pred);
System.out.println("Collection with map using map: " + anyMatch);
}
}
private void funcWithMapMulti(Object o) {
Predicate> pred = m -> true;
if (o instanceof Map && pred.test((Map, ?>) o)) {
System.out.println("Direct Map test OK");
} else if (o instanceof Collection) {
boolean anyMatch = ((Collection>) o).stream()
.>mapMulti((i, consumer) -> { // Using mapMulti for type conversion and filtering
if (i instanceof Map m) consumer.accept(m);
})
.anyMatch(pred);
System.out.println("Collection with map using mapMulti: " + anyMatch);
}
}
public static void main(String[] args) {
StreamPredicateExample example = new StreamPredicateExample();
Map map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2);
List list = List.of("string", 123, map, new HashMap<>());
example.funcWithMap(map);
example.funcWithMap(list);
example.funcWithMapMulti(map);
example.funcWithMapMulti(list);
}
}