2017-02-15 11 views
0

질문이 이미 제기되었는지 확실하지 않습니다. 나는 여전히 Java의 Stream API와 Google의 Guava에 익숙하지 않습니다.next()가 호출 될 때마다 스트림 종료

자바의 스트림 API를 사용하여 개체를 한 번에 다른 항목 하나로 변환하거나 매핑하고 싶습니다. 이것이 수집 된 것과 다른 것 같습니다. 한 번에 하나씩 호출 될 때 collect에서 스트림의 모든 항목을 변환하는 것처럼 보입니다. 이상적으로는, next()와 같은 것이 호출 될 때 하나의 항목을 변환 할 수있는 반복 가능을 제공하고 싶습니다.

private Iterable<ObjectA> getIterable(Iterable<ObjectB> itemsToConvert) { 
    return itemsToConvert.map(mappingFunction); 
} 

public static void main(String[] args) { 
    Iterable<ObjectA> myIterable = getIterable(itemsFromSomewhere); 
    // do the conversion here 
    ObjectA myItem = myIterable.next(); 
} 

스트림 API를 사용하여 Java에서이 작업을 수행 할 수있는 방법이 있나요 :

아마 다음과 같이 보일 것인가? 그렇지 않다면 Google의 Guava를 사용하여이 작업을 수행 할 수 있습니까?

+3

아마 의사 코드를 추가 당신이 달성하기를 원하는 것의 예 ... –

+1

@Erik이게 당신이 찾고있는 것일까요? http://stackoverflow.com/questions/23932061/convert-iterable-to-stream-using-java-8-jdk – Eugene

+0

@Eugene 그렇게 생각합니다. 감사합니다 – Erik

답변

1

오, Iterator.next 방법에 연결하고 싶습니다. 나는 그것이 가능하다고 생각하지 않는다. 그러나 필요한 참조를 얻었으므로 myItem을 조작 할 수 있습니다.

ObjectA myItem = myIterable.next(); 
manipulateObject(myItem); // change stuff do stuff 

그러나 반복자의 다음 항목을 변환 다음() 메소드를 원하기 때문에, 당신이 당신의 자신의 Iterator을 구현해야하며 여기에 설명처럼 오버라이드 (override) : https://stackoverflow.com/a/5849625/4467208

+1

의사 코드는 내 문제를 해결하지 않지만 당신이 준 링크는 – Erik

+0

여기에 stackoverflow에 대한 품질의 목적으로, 나는 당신이 자신의 답변을 작성하고 그것을 수락 한 것으로 확인하거나 @ 무라트 K , 받아 들인 대답으로 남겨 두십시오. – Wrench