Questions tagged «hashmap»

使用哈希函数将标识值(称为键)映射到其关联值的数据结构


8
为什么Map.of不允许空键和值?
在Java 9,新的工厂方法已经出台了List,Set和Map接口。这些方法允许快速实例化一行中包含值的Map对象。现在,如果我们考虑: Map<Integer, String> map1 = new HashMap<Integer, String>(Map.of(1, "value1", 2, "value2", 3, "value3")); map1.put(4, null); 如果我们这样做,则上面的内容毫无例外地被允许: Map<Integer, String> map2 = Map.of(1, "value1", 2, "value2", 3, "value3", 4, null ); 它抛出: Exception in thread "main" java.lang.NullPointerException at java.base/java.util.Objects.requireNonNull(Objects.java:221) .. 我无法获得,为什么在第二种情况下不允许null。 我知道HashMap可以将null作为键和值,但是在Map.of的情况下为什么要限制它呢? java.util.Set.of("v1", "v2", null)和的情况相同java.util.List.of("v1", "v2", null)。

2
“放置”会覆盖现有值吗?
哈希表的新功能,有一个简单的问题。由于某种原因,谷歌搜索并没有给我一个直接的答案。假设我已经建立了一个<int,String>哈希表: myHashtable.put(1,"bird"); myHashtable.put(2,"iguana"); 我想将“鸟”更改为“鱼”(并保持索引不变)。我可以做一个简单的put,还是需要删除该条目,或者什么?

8
在Java中反向HashMap键和值
这是一个简单的问题,我有一个简单的HashMap,我想将其反转键和值。 HashMap<Character, String> myHashMap = new HashMap<Character, String>(); myHashMap.put('a', "test one"); myHashMap.put('b', "test two"); 我想创建一个新的HashMap,在其中放置相反的内容。 HashMap<String, Character> reversedHashMap = new HashMap<String, Character>(); e.g. Keys "test one" & "test two" and values 'a' & 'b'.
71 java  hashmap 

5
为什么在HashMap.clear()中不再使用Arrays.fill()?
我注意到在实施时有些奇怪HashMap.clear()。这就是在OpenJDK 7u40中的样子: public void clear() { modCount++; Arrays.fill(table, null); size = 0; } 这就是从OpenJDK 8u40开始的样子: public void clear() { Node<K,V>[] tab; modCount++; if ((tab = table) != null && size > 0) { size = 0; for (int i = 0; i < tab.length; ++i) tab[i] = null; } } …
70 java  arrays  hashmap  java-8 

14
如何在Android中从HashMap打印所有键和值?
我对Android开发非常陌生,并且尝试在Android示例项目中使用HashMap。现在,我正在做示例项目以学习android。我只是将键和值存储在HashMap中,我想在EditView中显示键及其值。我在示例项目中遵循以下代码。但是,第一个键和值仅在EditView中打印。 Map<String, String> map = new HashMap<String,String>(); map.put("iOS", "100"); map.put("Android", "101"); map.put("Java", "102"); map.put(".Net", "103"); Set keys = map.keySet(); for (Iterator i = keys.iterator(); i.hasNext(); ) { String key = (String) i.next(); String value = (String) map.get(key); textview.setText(key + " = " + value); } 在EditViewiOS = 100中仅打印。我想在EditText中打印所有键及其值。谁能告诉我我做错了什么?提前致谢。
70 java  android  key  hashmap 

17
哈希查找或二进制搜索哪个更快?
如果给定了一组静态对象(静态的,一旦加载就很少加载,就意味着它永远不会变化),需要在其中进行重复并发查找以达到最佳性能,更好的情况是,HashMap还是使用某些自定义比较器进行二进制搜索的数组? 答案是对象还是结构类型的函数?哈希和/或相等函数性能?哈希唯一性?清单大小? Hashset尺寸/布景尺寸? 我正在查看的布景大小可以在500k到10m之间,以防信息有用。 当我在寻找C#答案时,我认为真正的数学答案不在于语言,因此我不包含该标签。但是,如果有C#特定的事情要注意,则需要该信息。

9
Java HashMap中的冲突解决
JavaHashMap使用put方法在中插入K / V对HashMap。可以说我使用过putmethod,现在HashMap<Integer, Integer>有一个条目,key其值为10和value17。 如果我在其中插入10,20,HashMap由于键10相同而发生冲突,它会简单地用该条目替换之前的条目。 如果钥匙碰撞,则HashMap用新的K / V对替换旧的K / V对。 所以我的问题是何时HashMap使用Chaining冲突解决技术? 为什么它没有形成linkedlist键值为10且值为17,20的a?
68 java  hashmap 

5
如何避免重复代码初始化hashmap的hashmap?
每个客户都有一个ID,以及许多带有日期的发票,这些日期按ID存储为客户的Hashmap,即按日期的发票哈希图: HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.get(id); if(allInvoices!=null){ allInvoices.put(date, invoice); //<---REPEATED CODE }else{ allInvoices = new HashMap<>(); allInvoices.put(date, invoice); //<---REPEATED CODE allInvoicesAllClients.put(id, allInvoices); } Java解决方案似乎是要使用的getOrDefault: HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.getOrDefault( id, new HashMap<LocalDateTime, Invoice> (){{ put(date, invoice); }} ); 但是,如果get不为null,我仍然希望执行put(日期,发票),并且仍然需要将数据添加到“ allInvoicesAllClients”。因此,它似乎并没有太大帮助。
27 java  java-8  hashmap 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.