0

有没有办法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每次迭代都必须创建一个新实例;这会占用大量资源还是有办法解决这个问题?

4

1 回答 1

1

You can use the Triple with any map impl (e.g. HashMap).

You'll need to construct a Triple for each lookup, this will have a non-zero performance impact but shouldn't be a huge deal and will have the cleanest code imo.

Suggest you run performance test before and after applying the Triple change and see if the impact is acceptable, and move forward with that if it is.

于 2015-12-21T21:44:09.517 回答