数据结构集,列表,映射还是树?

时间:2014-07-09 20:46:18

标签: java data-structures map tree set

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

Key:Long

值:设置

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

例如说我有对象< 1,[a,b,c]>我想添加d这个输出是< 1,[a,b,c,d]>?

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

5 个答案:

答案 0 :(得分:2)

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

例如:

    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

答案 1 :(得分:1)

正如其他人所说,Map<Long, Set<String>>最适合您。在您的示例中:

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"

答案 2 :(得分:0)

  

我有对象<1, [a,b,c]>,我想添加d,以便输出为<1, [a,b,c,d]>

Map<Long, Set<Character>

会很好用

答案 3 :(得分:0)

是的,地图可以运作。

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

答案 4 :(得分:0)

只需使用:

HashMap<Long, String> map = new HashMap<Long, ArrayList<String>>();

如果你想添加一些东西

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);
}

当然,您可以使用ArrayListHashSet

Vector替换为TreeSet