2017-02-15 6 views
0

質問が既に尋ねられたかどうかわかりません。私はまだJavaのStream APIとGoogleのGuavaの新機能です。next()が呼び出されるたびにストリームを終了します

JavaのStream APIを使用して、あるオブジェクトを別の1つのアイテムに一度に変換またはマップしたいと考えています。これは、収集とは異なるようです。これは、一度に1つではなく呼び出されたときに、collectのストリーム内のすべてのアイテムを変換するようです。理想的には、next()のようなものが呼び出されたときに1つのアイテムが変換されるような繰り返し可能なものを提供したいと思います。

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を実装する必要があり、それがここで説明されるようにそれをオーバーライドします。https://stackoverflow.com/a/5849625/4467208

+1

擬似コードは私の問題を解決しませんが、あなたが与えたリンク – Erik

+0

ここでstackoverflowの品質の目的のために、私はあなた自身の答えを書いて、受け入れられたものとしてそれをチェックするか、@ムラットKそれを受け入れられた答えとして残してください。 – Wrench

関連する問題