Java基础篇(四——2)——集合框架之Map接口

引言:

         Map的英文意思是地图,与java的集合类有何关系哪?其实地图就是一个个坐标和地址的集合,坐标就是key,具体地址就是value。

概述:

         java.util中包含了许多Java常用的类,最常用的集合类是List和Map。Map提供key到value的映射,以键值对(key——value)的处理数据。

内容:

        一 分类:Java自带的Map类可以分为以下三类,
            1 通用Map:用于在应用程序中管理映射,通常在java.util程序包中实现
             (1)HashMap:基于哈希表的Map接口实现,提供所有可选的映射操作,并允许使用null值和null键。
             (2)Hashtable:实现一个哈希表,该哈希表将键映射到相应的值,任何非null对象都可以用作键或值,键对象必须实现hashcode方法和equals方法。
             (3)Properties:继承于Hashtable,表示一个持久的属性集,属性列表中每个键及其对应值都是一个字符串。
             (4)LinkedHashMap:作为HashMap的一个子类,保留插入的顺序,若需要输出的顺序和输入时顺序相同,可以使用LinkedHashMap来实现。
             (5)IdentityHashMap:一种key值可以重复的map,判断俩个键值k1和k2相等的条件是k1==k2,与Map的(k1==null ? k2==null : e1.equals(e2))写法不同。
             (6)TreeMap:不仅实现了Map接口,还实现了SortMap接口,集合中的映射关系具有一定的顺序,但是在添加、删除和定位映射关系上,比HashMap的性能差一些,不允许键对象为null。
             (7)WeakHashMap:一个weak key的Map,是为某些特殊问题而设计的。它能让Map释放其所持有的对象。如果某个对象除了在Map当中充当键之外,在其他地方都没有其reference的话,那它将被当作垃圾回收。
             (8)ConcurrentHashMap:使用分段锁的技术解决了HashMap的线程不安全问题和HashTable在全局锁竞争激烈的情况下效率低下的问题。高并发问题常用的工具类,可以深入研究一下。
            2 专用Map:不必亲自创建此类Map,通过其他类对其进行访问,小编不多做介绍,根据特殊情况使用:java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults。
            3 自定义Map:用于帮助开发人员实现自己的Map的抽象类——AbstractMap,实际该类提供了Map接口的骨干实现,也就是提供了Map接口多数方法的实现,也可以在这个骨架上自行设计自己的Map接口。
        二 方法
            1 覆盖方法:通过覆盖如下俩个方法,以正确比较Map对象的等价性
equals(Object o)比较指定对象与此 Map 的等价性
hashCode()返回此 Map 的哈希码
           2 更新方法:可以更改Map内容
clear()从 Map 中删除所有映射
remove(Object key)从 Map 中删除键和关联的值
put(Object key, Object value)将指定值与指定键相关联
clear()从 Map 中删除所有映射
putAll(Map t)将指定 Map 中的所有映射复制到此 map
           3 返回视图的Map方法:通过这些方法返回的对象,可以遍历Map的元素,也可以删除Map中的元素
entrySet()返回 Map 中所包含映射的 Set 视图。Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素
keySet()返回 Map 中所包含键的 Set 视图。删除 Set 中的元素还将删除 Map 中相应的映射(键和值)
values()返回 map 中所包含值的 Collection 视图。删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)

     4 访问和测试方法:检索有关Map内容的信息但不更改Map内容

get(Object key)返回与指定键关联的值
containsKey(Object key)如果 Map 包含指定键的映射,则返回 true
containsValue(Object value)如果此 Map 将一个或多个键映射到指定值,则返回 true
isEmpty()如果 Map 不包含键-值映射,则返回 true
size()返回 Map 中的键-值映射的数目

总结:

        List与Map区别?
1用途不同: List 存储单列数据的集合; Map 存键和值双列数据的集合

   (2)存储规则不同:List中存储的数据有序且允许重复;Map中存储的数据无序且键不能重复,键对应的值可以重复。

   (3)原理:ListSet继承自Collection接口;Map不是。

   List和Map相辅相成,各有特色,各位读者老爷要分清场合,合理应用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值