黑马程序员-Java基础---集合框架-Map

第一讲 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集合的两种取出方式:keySetentrySet

一、  获取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集合中的值。

相关文章
相关标签/搜索