1
Map<String, Either<Boolean, Integer>
이 주어지면 부울 값을 가진 항목 만 포함하는 Map<String, Boolean>
으로 변환하는 가장 쉬운 방법은 무엇입니까?Javaslang에서 <?, Either>의 키와 왼쪽 값 추출
Map<String, Boolean> boolMap = eitherMap
.filter(entry -> entry._2.isLeft())
.map((key, value) -> Tuple.of(key, value.getLeft())
;
이 작동하지만, 불필요하게 장황 것, 그리고 몇 가지 엄격한, 한 단계가 있어야 것 같다 솔루션 "그 flatmap"
는 지금은이 있습니다.
Javaslang에 익숙하지 않아서 답변을 완전히 알지 못하지만 둘 중 하나가 '편향된'컨테이너 일 수 있습니다. 편향되지 않는다면 당신의 솔루션은 가장 단순한 것일 수도 있습니다. – melston
@melston '편향된 컨테이너'가 의미하는 바를 명확히 할 수 있습니까? –
이것은 일반적으로 가능한 두 가지 상태 중 하나와 함께 하나의 컨테이너로 사용됩니다. 편향된 변형은 하나의 상태가 '성공적인'상태이고 다른 하나는 오류 또는 실패 상태 인 변형입니다. 이 경우 flatmapping은 Option과 매우 비슷하게 동작합니다. None에 대한 flatmap 호출은 None을 반환하고, Some (x)에 대한 flatmap 호출은 x에 대해 계속 작동합니다. 이 접근법은 흔히 철도/철도 중심 프로그래밍으로 불리며, 실패/없음은 기본적으로 처리를 중단합니다. 따라서 성공시 flatmap을 호출하면 포함 된 값을 처리하는 반면 실패하면 flatmap을 호출하면 실패가 반환됩니다. – melston