【问题标题】:How to store several values to one key (java)如何将多个值存储到一个键(java)
【发布时间】:2013-07-17 02:56:01
【问题描述】:

我搜索一个可以存储多个键值对的数据结构。

数据基本上是这样的:

(1 , value_1)
(2 , value_2)

所以我想到了使用HashMap。遗憾的是,这对我不起作用,因为一个键可能会出现多个值。

(在上面的例子中:

(1 , value_2)

可能是另一个条目)

除了用新的对象或类似的东西创建一个列表之外,还有什么方法可以高效地存储这些数据。

get(1)

应该将 value_1 和 value_2 作为列表或集合或类似的东西返回。

提前致谢

【问题讨论】:

    标签: java data-structures key-value


    【解决方案1】:

    我认为您正在寻找的数据结构在谷歌的番石榴库 MultiMap 中。见http://guava-libraries.googlecode.com/svn-history/r13/trunk/javadoc/com/google/common/collect/Multimap.html

    基本上它是Map<K,Collection<V>>,但界面更易于使用。

    【讨论】:

      【解决方案2】:

      如果键是整数并且值是例如字符串,并且属于一个键的值不同,您可以使用例如简单的 Java 结构:

      Map<Integer, HashSet<String>> container = new HashMap<Integer, HashSet<String>>();
      
      void add(Map<Integer, HashSet<String>> container, int key, String value) {
          HashSet<String> values = container.get(key);
          if (values == null) {
              values = new HashSet<String>();
          }
          values.add(value);
          container.put(key, values);
      }
      

      【讨论】:

        【解决方案3】:

        您可以使用HashMap&lt;Integer,Set&lt;T&gt;&gt;HashMap&lt;Integer,List&lt;T&gt;&gt;,其中Tvalue_1value_2 等的类型。

        基本上,get 会做你想做的事。添加元素有点麻烦;你可以写一个简短的包装函数让它更好。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-03
          • 1970-01-01
          • 2018-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-16
          • 2021-01-29
          相关资源
          最近更新 更多