목록의 선택 목록에서 문자열 찾기

user1178830 :

나는 널 (null)이 될 수있다 '블록'의 목록을 가지고있다. 각 블록은 null이 될 수있는 이름의 목록이 포함되어 있습니다. 나는 모든 블록에있는 이름 중 하나가 단어 "선전"이 경우 찾기 위해 노력하고있어.

나는 작업을 수행하는 다음과 같은 코드가 있습니다 :

private boolean containsText(List<Blocks> blocks) {
        return Optional.ofNullable(blocks)
            .map(Collection::stream)
            .map(o -> o.map(Blocks::getNames))
            .map(e -> e.anyMatch(names -> names != null && names.contains("blurb")))
            .orElse(false);
}

getNames가 null을 반환 할 수 있기 때문에 그러나 나는 다음 명령문에서 확인해야합니다. 나는 그 시점에서 다른 선택 사항에서 포장 할 수 있지만 그때는 끝낼 것 Optional<Stream<Optional<List<String>>>>

사용은 names -> names != null 청소기를 보인다? 또는이를 단순화하는 방법은 무엇입니까?

또한 :

를 사용하지 않고 또 다른 간단한 변형 Optional겠습니까 단지 수 :

private boolean containsText(List<Blocks> blocks) {
    return blocks != null && blocks.stream()
            .map(Blocks::getNames)
            .filter(Objects::nonNull)
            .anyMatch(list -> list.contains("blurb"));
}

참고 : 문제 중 하나는 당신이 말하는 디자인이다, "나는 널 (null)이 될 수있다 '블록'의 목록이" 의 제거, 당신은 다음과 같은 표현을 위해 빈 목록을 반환하고 그것을 수정해야을 null위 체크인 암호.

추천

출처http://10.200.1.11:23101/article/api/json?id=8224&siteId=1