Apache Commons Collectionsライブラリの 4.0 リリースでは、ジェネリックのサポートが追加されました。コードを変換して利用するのに問題があります。
MultiValueMap
文字列をキーとして、文字列のコレクションを値として受け取る が必要です。しかし:
- キーは挿入順序を保持する必要があります (したがって、a を装飾して多値マップを作成します
LinkedHashMap
) - 値はキーごとに一意である必要があり、挿入順序を保持する必要があります (したがって、値のコレクション型を a にしたい
LinkedHashSet
)。
私が得ることができる最も近いものは次のとおりです。
MultiValueMap<String, String> orderedMap = MultiValueMap.multiValueMap(
new LinkedHashMap<String, Collection<String>>(),
LinkedHashSet.class
);
しかし、それはエラーを生成します:
multiValueMap(Map<K,? super C>, Class<C>)
型 のメソッドMultiValueMap
は引数に適用できません(LinkedHashMap<String,Collection<String>>, Class<LinkedHashSet>)
だから今、私はジェネリック地獄にいます。どんな提案でも大歓迎です。
バージョン 4.0 より前のバージョンでは、次のようにして実現しました。
MultiValueMap orderedMap = MultiValueMap.decorate(
new LinkedHashMap<>(),
LinkedHashSet.class
);
単純!LinkedHashMap
動作を装飾する を提供し、使用するMultiValueMap
コレクションのタイプ ( LinkedHashSet
) を値として指定します。しかし、and を呼び出すときにキャストする必要があるput()
ためget()
、4.0 で提供される新しい汎用バージョンを使用できるようにしたいと考えています。