Map 接口的特点:
Collection中的集合称为单列集合,Map中的集合称为双列集合
Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同
Map 没有元素由键与值两部分组成
Map的键不能重复
键和值都可以为null
遍历Map 可以用keySet();方法 也可以用Entry键值对对象遍历
Entry 键值对对象遍历
Map中的键和值一一对应,这一对对象成为Entry(项).Entry将键值对的对应关系封装成了对象:键值对对象
public K getKey():获取Entry对象中的键
public V getValue():获取Entry对象中的值
HashMap<K,V>:
存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
LinkedHashMap<K,V>:
HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
Map接口中的常用方法:
public V put(K key, V value): 查看集合中是否有key键,没有则添加这对键值对,返回值为null;有key键则将原集合中的key对应的值替换为参数内值(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集合)
JDK9对集合添加的优化
新的List、Set、Map的静态工厂方法可以更方便地创建集合的不可变实例
1:of()方法只是Map,List,Set这三个接口的静态方法,其父类接口和子类实现并没有这类方法,比如 HashSet,ArrayList等等;
2:返回的集合是不可变的;
Debug追踪
断点:
breakpoint, 在debug模式下, 程序运行到断点会暂停住, 便于我们在程序运行过程中查看
Debug调试程序:
可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug
使用方式:
在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里)
右键,选择Debug执行程序
程序就会停留在添加的第一个断点处
执行程序:
F8:逐行执行程序
F7:进入到方法中
shift+F8:跳出方法
F9:跳到下一个断点,如果没有下一个断点,那么就结束程序
ctrl+F2:退出debug模式,停止程序
Console:切换到控制台
|