概念:HashMap类似于Hashset与ArrayList集合的集合版,HashMap拥有key键值和value值,HasMap也不能用普通for循环遍历,key相当于ArrayList集合中的下标,我们可以根据需求自定义键值也就是下标,我们可以通过相应的key键值找到相对应的values值,与Hashset相比它有索引对于HashSet来说,有一个<E>代表泛型。它是专门处理键值映射数据的存储,可以根据键值实现对值 的操作
特点:1.HashMap是可以序列化的。是线程不安全的。
2.因为HashMap的底层主要是基于数组与链表实现的,所以它有相当快的查询速度
常用的HashMap方法有:
.put():以键、值的方式进行存储
.get():根据key返回相关联的值,如果不存在则返回null
.size():返回元素个数
.remove():删除由指定的键映射的键值对
.keySet():返回键的集合
.values():返回值的集合
.containsKey():查询是否存在映射的键值对
.containsValue():查询是否存在由这个值的键对
代码如下:
package com.ytzl.第一章.y1;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class map {
public static void main(String[] args) {
HashMap<Object, Object> map = new HashMap<>();//声明map集合
//录入key值和values值
map.put("刺客","李白");
map.put("法师","王昭君");
map.put("坦克","典韦");
map.put("战士","雅典娜");
System.out.println("所有key值集合=>"+map.keySet());//keySet()获取所有的keySet值
System.out.println("所有values值集合=>"+map.values());//values()获取所有的values值
System.out.println("刺客英雄有"+map.get("刺客"));//get()根据键值获取相应的values值
map.put("坦克","牛魔");//可以通过键值直接更改values值
for (Object obj://通过foreach循环进行遍历
map.keySet()) {//迭代键来输出
System.out.println("Key=>"+obj+" values=>"+map.get(obj));
}
map.remove("法师");//可以通过key的值来删除相应的Key和values值
map.remove("战士","典韦");//也可以通过values与key来删除相应的map
if (map.isEmpty()){//isEmpty来判断该集合是否为空
System.out.println("该集合为空");
}else {
System.out.println("该集合中存在元素");
System.out.println("是否存在李白"+map.containsValue("李白"));
System.out.println("是否存在刺客"+map.containsKey("刺客"));
Iterator<Map.Entry<Object, Object>> iterator = map.entrySet().iterator();//创造迭代器
while (iterator.hasNext()){//将所有的值存在迭代器中
Map.Entry<Object,Object> one=iterator.next();//通过其赋值获取
System.out.println("Key=>"+one.getKey()+" Values=>"+one.getValue());//通过封装的方法来get获取相应的值
}
System.out.println("该集合的长度为=>"+map.size());
map.clear();//清空该集合
}
}
}
代码运行结果如下: