前段时间,自己面试以及面试别人,都多次涉及到HashMap的原理,其实我自己也有点迷糊,不像刚学习的时候清晰,借写这篇博客的机会,回顾巩固一下
第一篇先来看下HashMap的定义和基本用法
一、HashMap的定义
根据百度百科,HashMap是基于基于哈希表的Map。我们先搞清楚Map的定义,列下JAVA中的注释:
An object that maps keys to values. A map cannot contain duplicate keys;
each key can map to at most one value.
可见,Map就是一个两两映射的映射表,类似于如下的结构
1->a
2->b
3->c
而哈希表,也叫散列表,是HashMap底层实现的数据结构。这一部分会在后续原理详解。
所以,HashMap其实就是一个用散列表来实现的存储映射关系的MAP
二、用法
说到用法,我们可以先看下接口Map中的方法
put-向map中添加键值对
get-根据key从map中或者value
replace-替换key对应的value
remove-删除key对应的键值对
其中常用的也就是增删改查
另外HashMap的遍历也是常见的用法
包括以下两种迭代方法:
1、foreach遍历map.entryset
当然也可以先获取map的key的集合、value的集合,再进行foreach迭代
2、迭代器遍历
获取entryset的迭代器,继而遍历
同样,可以对key集合、value集合遍历
HashMap map = new HashMap();
map.put("1", "11");
map.put("2", "22");
map.put("3", "33");
//第一种
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getValue());
}
for (String key : map.keySet()) {
System.out.println(key);
}
//第二种
Iterator> it = map.entrySet().iterator();
while (it.hasNext()) {
System.out.println(it.next().getValue());
}
Iterator itValue = map.values().iterator();
while (it.hasNext()) {
System.out.println(it.next().getValue());
}
三、使用场景
记录一个印象较深的使用场景
查询南京到北京的所有机票,以列表展示,此时希望以出发机场进行筛选;筛选条件由接口返回的所有机票的出发机场集合组成;使用HashMap记录机场,利用HasMap添加元素时,重复元素不会添加的特性,可以方便快捷地完成机场信息的提取。
之前写了两遍记录问题解决过程的博客,这是第一次写这样归纳知识点的文章,水平和文笔都有所欠缺,挤牙膏一般,权当记录学习的过程;后续我会不断的补充和完善,希望能够尽快的提高自己。