2017-12-11 3 views
-2

결과에 부울을 반환하려고합니다.Java 스트림을 사용하여 부울을 반환하는 방법

public boolean status(List<String> myArray) { 
     boolean statusOk = false; 
     myArray.stream().forEach(item -> { 
     helpFunction(item).map (x -> { 
       statusOk = x.status(); // x.status() returns a boolean 
       if (x.status()) { 
        return true; 
       } 
       return false; 
      }); 
     }); 
} 

람다 식에 사용되는 불평하는 변수는 최종적이거나 효과적이어야합니다. statusOk를 할당하면 루프 내부에 할당 할 수 없습니다. 어떻게하면 stream() 및 map()을 사용하여 부울 변수를 반환 할 수 있습니까? 당신이 잘못 스트림을 사용하는

+0

람다를 사용하는 포인트는 여기에 무엇이다 :

당신은 anyMatch이 로직을 구현 할 수 있습니까? 그리고 왜 map 대신에'map()'을 쓰겠습니까? 'anyMatch()'? –

+0

그런 상황에서 lambdas를 사용하는 방법에 대해이 질문을보십시오 : https://stackoverflow.com/questions/32268784/java8-effectively-final-compile-time-error-on-ninal-final-variable. 가능한 중복. – tkruse

+0

그런데 내부 람다를'x :: status' 또는 적절한 표기법이 무엇이든지 만드는 것이 잘못된 것입니까? –

답변

3

... 당신이 스트림에 foreach는 할 필요가없는

, 호출하는 anyMatch 대신

public boolean status(List<String> myArray) { 
     return myArray.stream().anyMatch(item -> here the logic related to x.status()); 
} 
3

그것은 helpFunction(item) 반환과 같은 몇 가지 클래스의 일부 인스턴스를 보이는 boolean status() 방법이 있고 Stream의 모든 요소에 대해 이 true 인 경우 메서드에서 true을 반환해야합니다.

public boolean status(List<String> myArray) { 
    return myArray.stream() 
        .anyMatch(item -> helpFunction(item).status()); 
} 
관련 문제