1
Map<Object,List<Object>>
を反復してList<Object>
(値)のオブジェクトがある条件を満たすようなMap.Entry
を抽出したいと思います。
私はこれを行うには、2つの方法を見ることができます:
リストを含むマップを線形時間に反復する
1)明らかな方法)は、リストの上にエントリーセットとループ(値を抽出することです。
2)このマップをGuavaのMultiMapに変換し、値をループし、条件が満たされている場合はキーにフラグを立て、マップから実際のListを抽出します。
私は非線形解法であるため、最初の方法を避けたいと思います。これを行うための他のより効率的な方法がありますか?
最初のアプローチは、線形時間ではありません。これはオブジェクトの総数が線形です。これらの2つのソリューションは同等です。 –
なぜ私は1)線形時間でなければならないのか分かりません。また、プロファイリングで特定されたパフォーマンスの問題がありますか、それとも単なる推測ですか? – Axel
最初のアプローチでは、まずすべてのエントリセットを反復処理する必要があります。各反復で、条件をチェックするためにその値を再びループする必要があります。それはネストされたループになります。これは非線形にしませんか? – user2780757