第一讲 Map概述&子类对象特色&共性方法数据结构
一、 定义线程
Map集合:该集合存储键值对,一对一对的往里存,并且要保证键是惟一的。若存了重复的键,那么对应此键的值将被后一个覆盖。对象
二、 Map子类对象特色blog
Map集合有以下三个子类:排序
l Hashtable:底层是哈希表数据结构,不可存入null键或null值。线程同步,JDK1.0就有,效率稍低。接口
l HashMap:底层是哈希表数据结构,能够存入null键或null值。线程同步,JDK1.2出现,效率较高。get
l TreeMap:底层是二叉树数据结构,线程不一样步,能够用于给Map集合进行排序。同步
三、 Map集合中操做数据的功能io
1) 添加元素table
l Put(K key , V value)——将一个键值对存入Map集合中,若是集合中已存在相同的键,返回该键对应的值;若是集合中没有相同的键,则返回Null。
l putAll(Map<? Extends K , ? extends V> m)——将一个Map集合中因此的键值存入另外一个Map集合中
2) 删除
l Clear()——清空Map集合中;
l Remove(Object key)——删除键key对应的元素,并返回值;
3) 判读
l containsValue(Object value)——按值判断map集合中是否存在对应的元素;
l containsKey(Object key)——按键判断map集合中是否存在对应的元素;
l isEmpty()——判断Map集合是否为空;
4) 获取
get(Object key)——根据键获取map集合中的元素;
size()——获取map集合中原元素个数;
values()——获取map集合中全部的值
代码实现以下:
第二讲 Map集合的两种取出方式:keySet和entrySet
一、 获取Map集合中元素的思路:map中用根据键获取值的方法get(),若是咱们能获取到集合中全部的键,那就能够利用get()方法来获取集合中的值了。
二、 利用keyset方式来取出Map集合中的元素
思路:Keyset方法能够获取到集合中全部的键,并将这些键存入Set集合中。而后咱们能够经过迭代器读取Set中的键,再利用get()获取每个键对应的值。
代码实现以下:
三、 利用entrySet方式来取出Map集合中的元素
思路:经过entrySet()方法能够获取Map集合中的映射关系(Map.Entry<K,V>),并存入Set集合中。经过映射关系接口Map.Entry<K,V>中的getKey()和getValue()方法来获取关系中的键和值。
Map.Entry说明: Entry也是一个接口,它是Map接口中的一个内部接口,并且是静态的,可经过外部接口直接调用。注意:内部接口由内部类来实现。
代码实现以下:
四、 练习
题目:每个学生都有对应的归属地,学生属性有:姓名、年龄,当姓名和年龄相同时视为同一个学生。要保证学生的惟一性
思路:
l 描述学生;
l 定义Map容器,将学生做文 键,地址做为值,存入容器;
l 获取Map集合中的元素;
代码实现以下:
五、 Map集合扩展
当键和值不是一对一关系,而是一对多关系,而多个对象又有键值对关系,此时须要利用嵌套map集合的方式存储。
解决思路:能够先将多个对象封装到一个Map集合中,而后再将给集合和键存入外面的Map集合中。
代码实现以下:
知识点总结
一、 Map 中的键和值都是一对一关系,且键在Map中必须是惟一的。若存在一对多的关系时,可使用嵌套map集合的方式进行存储,即,将多个对象先存放在内嵌map集合中,而后将此集合存入另外一个map集合中。
二、 取得map集合中全部值的方法有以下三种
l Collection<V> values();
l keySet方式
思路:先获取Map集合键,而后根据键取值。
l entrySet方式
思路:先获取Map集合中的映射关系,而后利用获取的映射关系来获取Map集合中的值。