2.9 Java之Map接口

Map接口继承树

  • Map是与Collection并列的接口
    这里写图片描述
    这里写图片描述

  • key和value可为引用类型的数据:Object类及其子类对象

  • key不可重复,value可重复,类比函数
  • 虚线为实现,实线为继承

这里写图片描述

  • hashset为hashmap的特别实现

Map内存结构

这里写图片描述

  1. 纵向:

    • key构成keySet(不重复结构)
    • value构成collection(可重复结构)
  2. 横向:

    • Entry为Map的内部类
    • 横向一个单位:entry
    • 四个entry构成Set(不重复结构)
  3. value设置为null,则hashmap成为hashset


Map接口方法

这里写图片描述
这里写图片描述

  • containsValue方法要求values对应的类型也要重写equals方法,因为要通过equals方法判断是否存在
  • map中键和值都要重写equals方法
  • 一言以蔽之,集合的equals方法都要写
  • map和set相比较list要多写hashcode方法,list可省略hashcode方法
  • LinkedHashMap同LinkedHashSet一样链表维护添加的顺序,遍历按添加顺序遍历
    这里写图片描述
    输出结果
    这里写图片描述

  • Map类对象可存null

  • key值若一样,则只进入一个键值对(后一个)
  • 判断key是否相同,利用对象的equals方法
  • key值若一样,新的键值对覆盖旧的键值对(输出结果为87的那个Person对象)

Map遍历

三个角度:键,值,键值对
这里写图片描述


遍历键和值

这里写图片描述

  • 遍历顺序不同于添加顺序(同hashset,为无序状态)
  • 两种遍历方法,可选(增强for循环和迭代器)
  • 键和值的遍历顺序一一对应,通过key寻找value(key有个指针指向value)

遍历键值对

这里写图片描述
这里写图片描述

  • 两种方法,一种利用Map接口方法,另一种利用Map的内部类Entry
  • Entry是Map的内部类,getKey,getValue是其方法
  • set2存的是Entry类对象
  • 进行向下转型
  • 打印entry,默认调用其ToString方法,键值间等号连接

LinkedHashMap

这里写图片描述
这里写图片描述

  • 使用链表维护添加的顺序,添加顺序与遍历顺序一致
  • 相较于hashmap的优缺点,类比HashSet与LinkedHashSet

TreeMap

这里写图片描述

  • 只看key排序,因为key是set
  • TreeMap中的key为TreeSet(value设置为null,则key转化为TreeSet)

TreeMap两种排序

两种排序方式,类比TreeSet,几乎一模一样,注意点也参照TreeSet


自然排序

这里写图片描述


定制排序

这里写图片描述

程序细节解释
这里写图片描述

  • 采用第二个构造器

Hashtable

Hashtable概述

这里写图片描述

Hashtable实例

测试类

这里写图片描述

属性文件

这里写图片描述

  • 键值间无空格

运行结果

这里写图片描述

  • 该Hashtable实现类:用于连接数据库,来载入属性文件信息

猜你喜欢

转载自blog.csdn.net/lwz45698752/article/details/81326618
2.9
今日推荐