是否有任何数据结构,如Map <k,v,w,... =“”>?</k,v,w,>

时间:2013-04-17 09:52:22

标签: java map

有时我需要在Map的密钥中存储多个值。我知道几种解决这个问题的方法,如:

  • 创建自己的Map<K,V,W>实施
    • 难以编写,可以轻松重复使用,如果需要更多值,则会出现问题
  • 使用n Map<K,V>
    • 易于实现,占用大量对象,Key被保存了很多次:如果你在某个地方删除了一个键怎么办?
  • 使用Map<K, Map<I, V>>并使用第二个密钥存储值
    • 易于实现,迭代时可能出现问题(空值),还需要跟踪值键
  • 创建一个存储K, V, W, ...并使用List<MyStorageClass>(或Map<K, MyStorageClass>)的类
    • 似乎是一个不错的选择:易于实现,但可能需要实现许多接口(例如Compareable
  • ......可能还有更多

但我想知道什么是Java方式的最佳实践(是的,我知道:“它取决于”)?或者是否有一种语言内置功能,我可以使用它来实现最少的实现工作?

2 个答案:

答案 0 :(得分:7)

 Sometimes i need to store more than one value to a key in a Map

为什么不使用多图? Multimap

答案 1 :(得分:2)

看看Spring的MultiValueMap