* isEmpty() 判断MAP是否为空
* clear() 删除MAP所有元素
* put(key, value) 向MAP中增加元素(key, value)
* remove(key) 删除指定KEY的元素,成功返回True,失败返回False
* get(key) 获取指定KEY的元素值VALUE,失败返回NULL
* element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
HashMap删除元素根据其遍历方式一般有两种方法,实例演示如下:
一、采用foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况。
1、遍历如下:
2、此时删除HashMap中的元素,Java很有可能会在运行时抛出异常。
运行上面的代码,Java抛出了 java.util.ConcurrentModificationException 的异常。并附有如下信息。
可以推测,由于在遍历HashMap的元素过程中删除了当前所在元素,下一个待访问的元素的指针也由此丢失了。
二、采用迭代器遍历,不仅适用于HashMap,对其它类型的容器同样适用。
1、采用这种方法的遍历,可以用下文提及的方式安全地对HashMap内的元素进行修改,并不会对后续的删除 *** 作造成影响。
2、运行结果没有显示,表明HashMap中的元素被正确删除了,代码如下:
扩展资料:
HashMap的遍历中删除元素的特殊情况:
如果HashMap中的键值同样是一个HashMap,假设你需要处理的是 HashMap<HashMap<String, Integer>, Double>myHashMap 时,可能需要修改myHashMap中的一个项的键值HashMap中的某些元素,之后再将其删除。
这时,单单依靠迭代器的 remove() 方法是不足以将该元素删除的。
具体代码如下:
原因在于,迭代器遍历时,每一次调用 next() 函数,至多只能对容器修改一次。上面的代码则进行了两次修改:一次添加,一次删除。
1.数组转换成map键值对
var m=new Map()
var arr=['a','b','v','r']
for(var i=0i<arr.lengthi++){
m.set(arr[i],i)//转变成新的map键值对,也可以像原有键值对添加新得键值对,具有唯一性,当重复赋值,则会使用最后一个值
}
console.log(m) //{"a" =>0,"b" =>1,"v" =>2,"r" =>3}
console.log(m.get('a')) //查看键值对a的值 0
console.log(m.has('c')) //查看是否存在这个键值对,返回布尔类型的值 false
console.log(m.delete('r')) //删除r键值对 返回布尔类型 true
console.log(m) //{"a" =>0,"b" =>1,"v" =>2}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)