私がしたいのはこれです:
for (Entry<Foo, Foo> myEntry : myMap.entryList())
{
if (someCondition(myEntry.getKey()))
{
doSomething(myEntry.getValue())
}
}
myEntry.getValue()は後で到達するキーを指すため、順序は重要です。エントリの順序を保証し、その順序でエントリを反復処理できるようにするMap実装はありますか?SortedMapを見つけましたが、SortedMapsがキーを並べ替えているようです。これは私が必要としているものではありません。エントリを配置したのと同じ順序でマップからエントリを取得したいだけです。
私が何をしようとしているのか疑問に思っている人のために、myMapはFooオブジェクトの階層を表しています。'someCondition'で条件が満たされると、Fooの親(たまたまエントリの値)をマークします。後で親がキーになると、以前にマークを付けたことがあることがわかり、それに応じてアクションを実行します。今、再帰的な「markParent」呼び出しを作成しましたが、既知の順序でマップを反復処理できれば、それを行う必要はありません。