Javaの既存のオープン ソースMap
実装はありますか?これは通常のキーと値のマップですが、キーごとに複数の値もサポートしますか? 私が見つけたマルチマップの実装は、キーをコレクションに関連付けているように見えますが、既存のコードのドロップイン置換が必要なため、これではうまくいきません。
「それはできない」と言っている人もいると思うので、広く使用されているフレームワークである Qt で動作する方法の例を次に示します。QMap
classのドキュメントからの抜粋を次に示します。
マップにキーkeyを持つアイテムが含まれていない場合、関数はデフォルトで構築された値を返します。マップにキーの項目が複数ある場合は、最後に挿入された項目の値が返されます。
私の必要性は非常に限られているので、現時点では以下のハックを使用しています。削除はなく、キーごとに多くの値が例外であり、重複したキーが少し壊れても問題ないため、これで十分です。
public static <V, V2 extends V> String mapMultiPut(
Map<String, V> map,
String key,
V2 value) {
int count = 0;
String tmpKey = key;
while (map.containsKey(tmpKey)) {
++count;
tmpKey = key + '_' + count;
}
map.put(tmpKey, value);
return tmpKey;
}
しかし、もしあれば、より良い解決策が欲しいです...