可能重复:
如何有效地迭代"地图"中的每个条目?
迭代一个项目的最佳方法是HashMap
什么?
假设我们有一个HashMap<String, Integer>
Java.
对于我找到的每个字符串的存在,如何更新(递增)字符串键的整数值?
人们可以移除并重新进入该对,但开销将是一个问题.
另一种方法是刚刚放置新的一对,旧的一对将被替换.
在后一种情况下,如果与我试图插入的新密钥存在哈希码冲突会发生什么?哈希表的正确行为是为其分配不同的位置,或者在当前存储桶中创建一个列表.
要向Hash添加新对,我会:
{:a => 1, :b => 2}.merge!({:c => 3}) #=> {:a => 1, :b => 2, :c => 3}
Run Code Online (Sandbox Code Playgroud)
是否有类似的方法从哈希删除密钥?
这有效:
{:a => 1, :b => 2}.reject! { |k| k == :a } #=> {:b => 2}
Run Code Online (Sandbox Code Playgroud)
但我希望有类似的东西:
{:a => 1, :b => 2}.delete!(:a) #=> {:b => 2}
Run Code Online (Sandbox Code Playgroud)
重要的是返回值将是剩余的哈希值,因此我可以执行以下操作:
foo(my_hash.reject! { |k| k == my_key })
Run Code Online (Sandbox Code Playgroud)
在一条线上.
HashSet基于HashMap.
如果我们看一下HashSet<E>
实现,一切都在管理之下HashMap<E,Object>
.
<E>
被用作关键词HashMap
.
我们知道这HashMap
不是线程安全的.这就是我们ConcurrentHashMap
在Java中的原因.
基于此,我很困惑,为什么我们没有一个应该基于的ConcurrentHashSet ConcurrentHashMap
?
还有什么我想念的吗?我需要Set
在多线程环境中使用.
另外,如果我想创建我自己的ConcurrentHashSet
,我可以通过替换HashMap
to来实现它,ConcurrentHashMap
并将其余部分保留原样?
我正在使用HashMap
.当我遍历地图时,数据以(通常是相同的)随机顺序返回.但是数据是按特定顺序插入的,我需要保留插入顺序.我怎样才能做到这一点?
如果我的价值"foo"
,以及HashMap<String> ftw
对于其ftw.containsValue("foo")
返回true
,我怎么能得到相应的钥匙?我是否必须遍历hashmap?最好的方法是什么?
我有一个Map,它包含键和值的字符串.
数据如下:
"问题1","1"
"问题9","1"
"问题2","4"
"问题5","2"
我想根据其键对地图进行排序.所以,最后,我会question1, question2, question3
......等等.
最终,我试图从这个Map中获取两个字符串.
现在我有以下内容:
Iterator it = paramMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry) it.next();
questionAnswers += pairs.getKey() + ",";
}
Run Code Online (Sandbox Code Playgroud)
这让我得到一个字符串中的问题,但他们不是有序的.
我创建的以下地图之间的区别是什么(在另一个问题中,人们回答使用它们似乎是可互换的,我想知道它们是否/如何不同):
HashMap<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<String, Object>();
Run Code Online (Sandbox Code Playgroud) 正如在这个答案的更新3中所表明的那样,这种表示法:
var hash = {};
hash[X]
Run Code Online (Sandbox Code Playgroud)
实际上并不散列对象X
; 它实际上只是转换X
为一个字符串(通过.toString()
它是一个对象,或者是各种基本类型的一些其他内置转换),然后在" hash
"中查找该字符串,而不对其进行散列.也不检查对象相等性 - 如果两个不同的对象具有相同的字符串转换,它们将仅相互覆盖.
鉴于此 - 在JavaScript中是否有任何有效的哈希映射实现?(例如,第二个Google结果javascript hashmap
产生一个实现,对于任何操作都是O(n).各种其他结果忽略了具有等效字符串表示的不同对象相互覆盖的事实.
hashmap ×10
java ×8
collections ×2
dictionary ×2
concurrency ×1
hashset ×1
hashtable ×1
iteration ×1
javascript ×1
key ×1
loops ×1
ruby ×1
ruby-hash ×1