黑马程序员技术交流社区
标题: 就业班Map双列集合简记 [打印本页]
作者: 海贼王和皮卡丘 时间: 2018-11-20 16:32
标题: 就业班Map双列集合简记
就业班Map双列集合简记
Map集合
Map集合的特点:
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
3.Map集合中的元素,key是不允许重复的
4.Map集合中的元素,key和value是一一对应
Map常用子类
HashMap<k,v>集合 implements Map<k,v>接口
HashMap集合的特点:
1.HashMap集合底层是哈希表:查询速度特别的快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+ 单向链表/红黑树(链表长度超过8):提高查询速度
2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
LinkedHashMap<k,v>集合extends HashMap<k,v>集合
LinkedHashMap的特点:
1.LinkedHashMap集合底层是哈希表+链接(保证迭代的顺序)
2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
Map接口中常用的方法:
- public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
(返回值V:
存储键值对时候,key不重复,返回值null
存储键值对的时候,key重复,会使用新的value替换map中的重复法value,返回被替换的value值)
- public V remove(Object key): 把指定的键 所对应的键值和元素 在Map集合中删除,返回被删除元素的值。
- public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
- boolean containsKey(Object key) 判断集合中是否包含指定的键。
- public Set<K> keySet(): 获取Map集合中所有的键存储到Set集合中。
- public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。
Map集合遍历键找值方式
Map中方法:
Set<k> keySet()返回次映射中包含的键的set视图
实现步骤:
1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个set集合中
2.遍历set集合,获取Map集合中的每一个key
3.通过Map集合中的方法get(key),通过key找到value
Entry键值对对象
Map.Entry<K.V>:在Map接口中有一个内部接口Entry
作用:当Map集合一创建,那么就会在Map集合中创建一个 Entry对象,用来记录键与值(键值对对象,键与值的映射关系)
实现步骤:
Set<Map.Entry<K,V> entrySet()把Map集合内部的多个Entery对象取出来存储到一个Set集合中,
遍历Set集合中的每一个Entry对象
Entry对象兑现中方法getKey()获取key,getValue()获取value
HashMap存储自定义类型的键值:
若要保证自定义类key值唯一,必须要重写hashCode方法 和equals方法,可以保证key唯一
value可以重复
LinkedHashMap集合
LinkedHashMap<K,V> extends HashMap<K,V>
Map接口的哈希值和链接列表实现,具有可预知的迭代顺序.
底层原理:
哈希表+链接(记录元素顺序)
Hashtable集合
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程集合,速度快
HashMap集合(之前学的所有集合):可以存储null值,null键
Hashtable集合,不能存储null值,null键
Hashteale和Vector集合一样,在JDK1.2版本之后被更先进的集合(HashMap,ArrayList)取代了
Hashtable的子类Properties依然活跃在历史舞台
Properties集合是一个唯一和IO流相结合的集合
JDK9对集合添加的优化
JDK9的新特性
List接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素
static <E> List<E> of(E.....elements)
使用前提:当集合中存储的元素个数已经确定了,不在改变时使用
注意:
1.of方法只适用于List接口,Map接口,不适用于接口的实现类
2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
3.Set接口和Map接口在调用of方法的时候,不能有重复元素,否则会抛出异常
DeBug追踪
DeBug调试程序
可以让代码逐行执行,查看代码执行的过程,调 试程序中出现的bug
使用方式:
在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里)
右键,选择DeBug执行程序
程序就会停留在添加的第一个断点处
执行流程:
f8:逐行执行程序
f7:进入到方法中
shift+f8:跳出方法
f9:跳到下一个断点,如果没有下一个断点,那么就结束程序
ctr+f2:退出debug模式,停止程序
Console:切换到控制台
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |