【问题标题】:Data Structure Set, List, Map or Tree?数据结构集、列表、地图还是树?
【发布时间】:2014-07-09 20:46:17
【问题描述】:

我正在尝试选择具有以下属性的 Java 数据结构

键:长

值:设置

是否有我可以索引到 Set 并向 Set 添加值的结构?

例如,假设我有对象 并且我想添加 d 以便输出为 ?

这可以在java中轻松完成吗?

【问题讨论】:

标签: java data-structures map tree set


【解决方案1】:

如果您能够使用第三方库,Guava 具有 Multimap,可以轻松为单个键存储多个值。

例如:

    import com.google.common.collect.HashMultimap;

    HashMultimap<Long, String> multimap = HashMultimap.create();
    multimap.put(1L, "a");
    multimap.put(1L, "b");
    multimap.put(1L, "c");
    multimap.put(1L, "d");

the docs

【讨论】:

    【解决方案2】:

    正如其他人所说,Map&lt;Long, Set&lt;String&gt;&gt; 将为您提供最佳服务。在您的示例中:

    Map<Long, Set<String>> myMap = new HashMap<Long, Set<String>>(); 
    Set<String> initialSet = new HashSet<String>();
    initialSet.add("a");
    initialSet.add("b");
    initialSet.add("c");
    myMap.put(1, initialSet);
    myMap.get(1).add("d"); // to add the "d"
    

    【讨论】:

      【解决方案3】:

      我有对象&lt;1, [a,b,c]&gt;,我想添加这个,以便输出为&lt;1, [a,b,c,d]&gt;

      Map<Long, Set<Character>
      

      会很好用

      【讨论】:

      • 所以 map.put(long, val) 将添加到值而不是覆盖它们?
      • 你先拿到set再添加
      • map.get(1L).add('d')
      【解决方案4】:

      是的,地图可以工作。

      Map yourmap = new HashMap<Long, List<String>>();
      

      【讨论】:

        【解决方案5】:

        只需使用:

        HashMap&lt;Long, String&gt; map = new HashMap&lt;Long, ArrayList&lt;String&gt;&gt;();

        如果你想添加一些东西就可以了

        ArrayList<String> list = map.get(KEY_YOU_WANT_TO_CHECK);
        if(list == null){
            list = new ArrayList<String>();
            list.add(STRING_YOU_WANT_TO_ADD);
            map.put(KEY_YOU_WANT_TO_CHECK,list);
        }else{
            list.add(STRING_YOU_WANT_TO_ADD);
        }
        

        当然你可以用HashSet替换ArrayList,也可以用VectorTreeSet替换TreeSet

        【讨论】:

          猜你喜欢
          • 2019-05-25
          • 2011-05-15
          • 1970-01-01
          • 1970-01-01
          • 2014-04-28
          • 2013-07-30
          • 2018-12-12
          • 1970-01-01
          • 2015-08-09
          相关资源
          最近更新 更多