Map及常用实现类

在上一篇集合框架中Map讲的不是很详细,在实际开发中,Map的作用还是很大的,所以再来理一理。

Map存储的是键值对(key : value),一个key对应一个value,不允许有重复的key,当你试图添加一个相同的key的时候,这个key的value会覆盖之前的value。Map是通过hashCode判断和.equals方法来判断一个key是否相同的,也就是说,当你put一个新项到Map中,它会先遍历这个Map,将每个key和你新put的key进行对比,如果hashCode不相等,那么.equals方法返回肯定为false,所以可以将这个项put进去;如果hashCode相同,但是.equals方法的返回值也不一定为true,也就是还要判断.equals方法,如果为true,Map就会认为这个key已经存在了,会覆盖这个key之前的value。所以如果你想在Map中存放一个自定义的对象,那么这个对象必须要重写hashCodeequals方法。

Map常用方法

  1. size() : int返回Map中元素的个数
  2. isEmpty() : boolean 返回一个布尔值,表示这个Map是否为空
  3. containsKey(Object) : boolean 返回一个布尔值,表示这个Map中是否存在一个为Object的key
  4. containsValue(Object) : boolean 返回一个布尔值,表示这个Map中是否存在一个为Object的value
  5. get(Object) : V 返回Object这个key所对应的Value
  6. put(K, V) 添加一个元素到Map中
  7. clear() 清除Map中的元素
  8. keySet() : Set 返回一个Set对象,里面包含Map的所有key
  9. values() : Collection 返回一个实现了Collection的类的对象,里面包含Map中的所有value
  10. entrySet() : Set 返回一个Set,Set中的每个元素都为entry,每个entry中包含Map的一个Key和对应的Value
  11. equals() : boolean 用于比较两个Map是否相等

三个常用实现类

HashMap

HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口,HashMap是无序的

LinkedHashMap

继承于HashMap,与HashMap不同的是:LinkedHashMap可以记录你添加元素的顺序,因此它是有序的

TreeMap

继承于AbstractMap,类似于TreeSet,TreeMap也会对元素按照自然顺序排序,默认升序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算...
    曹振华阅读 2,524评论 1 37
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,288评论 0 16
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,516评论 0 3
  • jwdsda
    费强阅读 125评论 0 0