これを受け入れることに関しては、Iterable<T>
これは明らかに良いことです。これは、ほぼすべてのデータ構造を渡すことができることを意味します。非常に単純なIterable<T>
インターフェイスを実装するだけで済みます。これにより、コードの再利用が容易になります。
利点の1つを返すIterable<T>
ことは、メソッドの実装が変更される可能性があることです。おそらく、より効率的なデータ構造を使用するか、要求されたときに結果を遅延生成することによって(たとえば、ディスクからのストリーミング)。Iterable<T>
クライアントはインターフェースにのみ依存するため、クライアントを壊すことなく実装を変更するのは簡単です。を公開した場合はList<T>
、クライアントが順番にデータにアクセスするかどうかを確認できません。
結果に複数回アクセスする必要がある場合は、最初にデータを別の構造にコピーするのが理にかなっています。しかし、あなただけがあなたの特定の状況に最も役立つ特定のコレクションを知っています。時々それはかもしれませんArrayList
。また、アイテムをに保存したい場合もありますHashMap
。したがって、とにかくデータを新しいデータ構造にコピーしなければならないことがよくあります。