我正在尝试选择具有以下属性的Java数据结构
Key:Long
值:设置
是否有可以索引的结构并将值添加到Set?
例如说我有对象< 1,[a,b,c]>我想添加d这个输出是< 1,[a,b,c,d]>?
这可以在java中轻松完成吗?
答案 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);
}
当然,您可以使用ArrayList
和HashSet
Vector
替换为TreeSet