有没有办法MultiKeyMap
用多个键参数化 Apache Commons'?IE
MultiKeyMap<String, String, Integer, Float> m = new MultiKeyMap<String, String, Integer, Float>();
我最初有原始MultiKeyMaps
但由于这些映射在我的程序中的频率,我想通过参数化它们来确保一致性。
我不想使用MultiKeys
,因为我存储在 MultiKeyMap 中的数据需要MultiKey<String, String, Integer>
. 但是,MultiKey
仅支持一种类型的键(MultiKey<String>
或 MultiKey<Integer>
)。如果有解决方法,我愿意接受建议。
需要明确的是,我要解决的总体问题是:我想通过参数化它们来确保MultiKeyMaps
程序中的 具有相同类型的键,但在键 ( <K, K, K, V> = <String, String, Integer, Float>
) 中具有不同的类。
编辑:有人建议(在现在已删除的答案中)我使用 a Triple<String, String, Integer>
,我试过:
private static MultiKeyMap<Triple<String, String, Integer>, Float> multiKeyMap = new MultiKeyMap<Triple<String, String, Integer>, Float>();
Triple<String, String, Integer> t = Triple.of("asdf", "asdf", 4);
multiKeyMap.put(t, 5);
但是,在该语句的第三行,它似乎期望以put(Triple<String, String, Integer> key1, Triple<String, String, Integer> key2, Float value)
. 我现在的问题是:有了这个答案,我现在不需要 a 了MultiKeyMap
吗?我应该现在使用Map<Triple<String, String, Integer>, Float>
吗?
还值得注意的是,我需要频繁地遍历这个映射(有大量数据),当我有一个非参数化的时候这很容易,MultiKeyMap
因为我可以get()
根据需要更改方法中的参数。使用 a Triple
,我相信Triple
每次迭代都必须创建一个新实例;这会占用大量资源还是有办法解决这个问题?