------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----
Map集合
一、Map概述
Map集合存储键值对。一对一对的存储。键不可以重复,值可以被覆盖。
|--Hashtable: 底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低(比较规则是hashCode()和equals())。
|--HashMap:底层是哈希表数据结构,允许使用 null值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高(比较规则是hashCode()和equals())。
|--TreeMap: 底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序(排序时的方法和TreeSet一样,即:实现comparable和comparator两个接口即可)。
其实Set底层就是使用了Map集合。
二、Map<K,V>常用的公共功能
1,添加
V put(K key, V value) 添加时,如果出现相同的键。那么后添加的值会覆盖原有键的对应值。并且put方法会返回被覆盖的值。
void putAll(Map<?extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中
2,删除
void clear() 清空集合
V remove(Object key) 方法会删除指定元素并返回被删除的值。
3,判断
boolean containsValue(Objectvalue) 若包含此值,则返回true。
boolean containsKey(Objectkey) 若包含此键,则返回true
boolean isEmpty() 若包含键和值,则返回 true。
4,获取
V get(Object key) 返回指定键所映射的值,不存在返回NULL,
Collection<V> values() 返回此映射中包含的所有的值。
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set 视图。
Set <K> keySet() 返回此映射中包含的所有键并存入Set集合中。
三、 取出map集合元素的两种方式
1、Set<k> keySet
将map集合中所有的键存入到Set集合。因为set具备迭代器,可以用迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。
1.1、keySet()代码示例
2、Set<Map.Entry<k,v>>entrySet
先将map集合中的映射关系转换成Map.Entry数据类型存入到set集合中;
再利用set迭代器遍历set集合中的元素,
通过Map.Entry中的特有方法getKey()和getValue()取出所有的键和值。
2.1、entrySet()代码示例
Map扩展练习:现实生活中一种事物往往有多重映射关系 ,例如一个学校有好几个年级,一个年级有好几个班,一个班有好多学生。
练习:一个学校有两个班,基础班和就业班;每个班级有两名同学,每名同学还有自己的名字和年龄 。
代码示例:
运行结果为:
小知识点:Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。
代码示例: