riz*_*lp1 10
是的,这叫做链接.您将希望尽可能避免链接,特别是如果链的大小开始增加.较长的链大小将抵消使用散列结构的整个目的,因为目标是尽可能接近O(1).
Map<String, List<String>> hm = new HashMap<String, List<String>>();
List<String> values = new ArrayList<String>();
values.add("Value 1");
values.add("Value 2");
hm.put("Key1", values);
Run Code Online (Sandbox Code Playgroud)
你可以试试Guava图书馆(以前的谷歌收藏).它具有Multimaps的实现,可以为单个密钥存储多个值.
例如,ListMultimap实现允许以插入顺序保存的重复键/值对.
这是你如何使用它:
ListMultimap<String, Integer> numberClasses = ArrayListMultimap.create();
numberClasses.put("odd", 1);
numberClasses.put("odd", 3);
numberClasses.put("odd", 5);
numberClasses.put("even", 2);
numberClasses.put("even", 4);
numberClasses.put("even", 6);
assertEquals(Arrays.asList(1,3,5), numberClasses.get("odd"));
assertEquals(Arrays.asList(2,4,6), numberClasses.get("even"));
Run Code Online (Sandbox Code Playgroud)
另一个很酷的例子是SetMultimap,它与ListMultimap非常相似,只是键的值保存在一个集合中.(从用户的角度来看,我不知道它是如何实现的.)
SetMultimap<String, Integer> setMultimap= HashMultimap.create();
setMultimap.put("key1", 1);
setMultimap.put("key1", 1);
setMultimap.put("key1", 1);
setMultimap.put("key1", 2);
setMultimap.put("key2", 1);
setMultimap.put("key2", 3);
assertEquals(ImmutableSet.of(1,2), setMultimap.get("key1"));
assertEquals(ImmutableSet.of(1,3), setMultimap.get("key2"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27457 次 |
| 最近记录: |