需要导入的包
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
HashMap的基本方法
//泛型 <> 表示存储数据的类型
//<Integer,String>,表示key是Integer value是String
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"第一名");
map.put(2,"第二名");
map.put(3,"第三名");
map.put(4,"第四名");
int size = map.size(); //Map集合 映射的数量
System.out.println("mapsize()="+size); //输出结果:4
//获取所有的key,返回类型为Set
Set<Integer> keys = map.keySet(); //Set接口
System.out.println("map.keySet()="+ keys); //输出结果:[1,2,3,4]
//获得所有的value,返回类型为
Collection<String> values = map.values(); //Collection接口
System.out.println("map.values():" + values);
//输出结果:[第一名, 第二名, 第三名, 第四名]
//map.get(key) 获取key为 2,对应的value值
System.out.println(map.get(2)); //输出结果:第二名
//如果key或者value为空,则返回 null
System.out.println(map.get(10)); //输出结果:null
//遍历Map集合
map.forEach((k,v)->{
System.out.println(k+":"+v);
});
/*输出结果:
*
* 1:第一名
2:第二名
3:第三名
4:第四名
*
* */
System.out.println();
//map.remove(key) 根据key移除map中的与该key相关的映射,
map.remove(4);
map.forEach((k,v)->{
System.out.println(k+":"+v);
});
/*输出结果:
*
* 1:第一名
2:第二名
3:第三名
*
* */
System.out.println();
//map1.putAll(map2)//把一个map2集合合并到另一个map1集合里,若key有重复的,则map2的键值覆盖与map1重复的键值
//map.clear();//清空Map集合中所有的键值,清空后,map.size()为0
遍历HashMap
//Map.Entry
//Entry是Map集合的一个内部接口,用于封装Map集合的一组键值(key和value)
//可通过entrySet()一次性同时获取key和value
Map<Integer,String> map2 = new HashMap<Integer,String>();
map2.put(1,"First");
map2.put(2,"Second");
map2.put(3,"Third");
map2.put(4,"Fourth");
//遍历Map方法1,二次取值,效率最慢
for(Integer key : map2.keySet()) {
System.out.println(key+" : "+map2.get(key));
}
//遍历Map方法2
map2.forEach((k,v)->{
System.out.println(k+":"+v);
});
//遍历Map方法3 //只取一次 速度最快
System.out.println("通过Map.entrySet()使用iterator遍历key和value:");
Map.Entry<Integer, String> entry;
//Iterator只能在Collection集合中使用,不能在Map中使用,可通过Map的keySet() entrySet() 使用Iterator
Iterator<Entry<Integer, String>> it = map2.entrySet().iterator();
while(it.hasNext()) {
entry = it.next();
System.out.println( entry.getKey() + " : " + entry.getValue() );
}
//遍历Map方法4
System.out.println("通过Map.entrySet遍历key和value");
for(Map.Entry<Integer,String> entry2 : map2.entrySet()) {
System.out.println( entry2.getKey() + " : " + entry2.getValue() );
}
//Map.entrySet()迭代器会生成Entry Iterator,其返回的实例是一个包含key/value键值对的对象。
//而keySet()中迭代器返回的只是key对象,还需要到map中二次取值。故entrySet()要比keySet()快一倍左右。
参考链接:https://blog.csdn.net/songfeihu0810232/article/details/80156626
参考链接:https://blog.csdn.net/weixin_41763995/article/details/80223244