1.Map集合

1.Map集合

1.Map集合

Map集合是双列集合,一个元素包含两个数据,分别是键和值

键和值是一 一对应的关系,一个键只能有一个值,并且键不能重复,值可以重复

键和值合在一起称为键值对对象

应用场景

如下图,我们在购物的时候会在一个商家那购买多件商品,就需要用单列集合进行存储,但是我们买的商品可能会来源于不同的商家,所以我们要使用双列集合,键对应不同的商家,值就对应用单列集合存储的商品

2.Map集合常用的方法

[1]put:添加元素

双列集合一次存两个数据,所以泛型也需要指定两种。Map集合是接口,需要用多态形式创建

注意事项:如果键已经存在,就会用新值替换旧值

之前说过键是不能重复的,如果在使用put方法,添加的元素中存在键重复,那么新添加的元素的值就会替换掉旧值

put方法返回的类型是值的泛型,返回值是被覆盖掉的值,没有必要接收

[2]remove:根据键删除键值对

remove的返回值是被删除的键,所对应的值,没有必要接

..

[3]clear、isEmpty、size

[4]containsKey、containsValue:是否包含键、值

..

3.TreeMap、HashMap、LinkedHashMap

它们的原理和单列集合一样 ,使用也和单列集合一样

HashMap的原理

因为双列集合的底层结构和单列集合一样,所以我们这里就挑HashMap进行讲解

[1]创建了HashMap后,产生一个数组

[2]使用put方法添加键值对,之后会将这两个数据封装在Entry的对象中

[3]随后,Entry对象会取出键计算应存入索引位置,计算的方式也和之前说HashSet一样

[4]接着,根据索引存入索引位置,若位置为空则直接存入,有元素就调用equals方法判断

[5]挂了12个元素,或者链表挂载元素超过阈值,进行扩容,重复此操作,直到数组长度到达64,转红黑树

总结

4.Map集合的遍历方式

[1]通过键找值

Map集合有两个方法,分别是根据键获取值、获取到所有的键

我们通过keySet方法获取到所有的键,然后遍历键,再使用get方法获取到所有的值

总结

[2]通过键值对对象获取键和值

Entry即键值对对象,是Map集合的内部类,所以要用Map.Entry的方式调用

通过entrySet获取到所有键值对对象

然后再通过键值对对象调用getKey和getValue获取到键和值

..

总结

[3]使用foreach遍历Map

BigConsumer是一个函数式接口,我们可以使用匿名内部类或者Lambda表达式,重写的accept方法的两个参数分别是键和值

5.案例

1.案例一

1.字符--次数,很明显要使用双列集合,键即是字符,值即是次数

2.遍历字符串,将字符串拆分成一个个的字符

3.使用containsKey方法判断存入的字符是否是第一次存入,是则给值初始化,不是,则获取到值,再对值加1

4.再创建StringBuilder,拼接出答案要求的格式

2.案例二

1.定义双列集合,键对应省,因为有多个市,所以我们使用集合嵌套,值对应单列集合

2.先将市全部装到单列集合

3.再使用put方法将省和单列集合存入双列集合

4.遍历双列集合,获取到键和值,其中键可以直接打印,但是值是集合,还需要继续遍历

相关推荐

正常情况下手雷爆炸时间是几秒?
28365-365体育备用

正常情况下手雷爆炸时间是几秒?

📅 08-07 👁️ 5008
林志玲的真实身高惊人!揭秘女神身高背后的秘密
苹果免费小说阅读软件推荐,无广亲测好用!
365bet足球网投

苹果免费小说阅读软件推荐,无广亲测好用!

📅 07-29 👁️ 4533