28 Map集合

2020-03-11  本文已影响0人  ca8519be679b

Map集合和之前Collection集合不同,前者是双列,k,v建立对应关系,且k唯一,而Collection是单列类型

位与java.util下需要导包,k,v可以类型相同也可以不同

其有很多实现类如HashMap哈希表,我们之前学过HashSet基于其实现,其单列实现相当于只有k,没有v

查询速度快

1

Map常见方法 

  Vput(K key, V value)           通过给定的key设置value,返回key替换的值,如果之前不存在返回null。

2

代码如上,可以看到Map,HashMap的toString方法也是被重写了的

V remove(Object key)  依据key铲除键值对,返回value值,如果key不存在,返回null

3

代码如上

V  get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null。

4

 boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回true。

5

当然还有values()返回Collection集合,size()返回键值对数量

Map遍历

方法keySet(),返回Map的存储键的Set集合,可以通过遍历其获得所有的键

6

如上,通过foreach遍历set

7

使用迭代器,这里迭代器是Object返回,需要强转

Entry键值对 对象

是Map类内部接口,用于记录键值的映射,其getKey(),getValue()分别获得键值对的键和值,通过map对象的entrySet()返回其键值对的Set集合

8

如上,这里记得Entry和map一样,接口需要传入2个列的泛型

如果我们使用自定义的类实例作为Key,记得重写hashCode和equals方法,保证实例的不重复哈希

LinkedHashMap

其查看文档可以知道,是哈希表加上链表实现,维护可预知的迭代顺序

9

还是老套路,先使用hashmap,可以发现无序

10

使用LinkedHashMap可以发现顺序和放入一致


Hashtable类

是Map接口的实现类,key不可以为null,其是同步的(等同于单线程),但是同步会比较慢

而之前将的HashMap是异步的,线程不安全,但是会比较快,可以使用唯一null作为key

两者的共同点就是底层都是哈希表

jdk1.2以后和vector一样被先进的Collection集合取代了(使用HashMap和ArrayList)

11

如上,HashMap允许使用空作为Key,但是Hashtable不可以,运行时报空指针异常,而且注意table是小写

Demo统计用户输入字符串字符次数

12

如上


JDK9 of方法

13

是JDK9给List,Set,Map添加的静态方法,可以一次添加多个元素,不能用于接口实现类,集合创建后不能改变,不可add,put,remove.  set和map不能有重复的元素(map指键)

13

如上,我们使用List,注意格式,编译未报错,但是运行时提示不支持额外操作

14

如上,我们可以看到运行时报错,Set是不能存储重复元素的


Debug idea

intelliJ idea编辑器的debug放在这里也是很突兀,但是不调整位置了,根据视频位置调整吧,

15 16

我们逐行执行for循环,可以看到每次的数据值

上一篇 下一篇

猜你喜欢

热点阅读