免责声明:我是 Javaslang 的创建者
这是一个基于 javaslang-2.1.0-alpha 的解决方案。我们利用了 Either 偏右的事实。因为我们关注左边的值,所以我们交换了 Either。如果 flatMap 包含布尔值,则 flatMap 将遍历 Either。
import javaslang.collection.Map;
import javaslang.control.Either;
import static javaslang.API.*;
public class Test {
public static void main(String[] args) {
Map<String, Either<Boolean, Integer>> map = Map(
"a", Left(true),
"b", Right(1),
"c", Left(false));
Map<String, Boolean> result =
map.flatMap((s, e) -> e.swap().map(b -> Tuple(s, b)));
// = HashMap((a, true), (c, false))
println(result);
}
}
您可以在 javaslang-2.0.5 中使用静态工厂方法(如Tuple.of(s, b)
.