黑马程序员——java基础---集合(第16天)

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----

Map集合   

一、Map概述 

Map集合存储键值对。一对一对的存储。键不可以重复,值可以被覆盖。

       |--Hashtable:  底层是哈希表数据结构,不可以存入nullnull。该集合是线程同步的。jdk1.0.效率低(比较规则是hashCode()和equals())。

       |--HashMap:底层是哈希表数据结构,允许使用 null值和 null ,该集合是不同步的。将hashtable替代,jdk1.2.效率高(比较规则是hashCode()和equals())。

       |--TreeMap: 底层是二叉树数据结构。线程不同步。可以用于给map集合中的进行排序(排序时的方法和TreeSet一样,即:实现comparablecomparator两个接口即可)

其实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接口中的一个内部接口。

   代码示例:


------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流-----



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值