Map包

时间:2024-4-15    作者:老大夫    分类: JAVA


Java.Util.Map中存储的是一对一对的键值对

1.Map的不同实现类的对比

  1. HashMap:主要实现类,线程不安全的;可以添加null的key和value值;底层使用数组+单向链表+红黑树存储结构(Jdk8.0)

  2. TreeMap:底层使用的红黑树存储;可以按照添加的键值对(key-value)中的key(键)的大小顺序排列,自然排序,定制排序;

  3. Hashtable:古老实现类,线程安全的,执行效率低;不可以添加null的key和value值;底层使用数组+单向链表

  4. LinkedHashMap:是HashMap的子类,在HashMap的基础上增加了双向链表用于记录元素的添加顺序,进而在遍历元素时可以按照添加顺序显示,开发中对于频繁的遍历操作推荐使用。

  5. Properties:其key和value都是Striing类型,常用于处理属性文件

2.HashMap中元素的特点

存储的元素中,键(key)的值不可以相同,
Map中存储的键值对,其实是一个叫做Entry的类。

HashMap中所有的key不可以重复。所有的Key构成了一个Set集合。--->Key所在的类要重写HashCode和equals方法
HashMap中所有的value之间时可重复的,无序的。所有的value构成了一个Collection集合,Value所在的类要重写equals方法。
HashMap中的一个Key和Value构成了一个Entry,所有的Entry之间不可重复,构成了一个Set集合。

不用记,直接所有类都重写HashCode和equals。 在idea中也是这俩方法一块重写。

Map中的常用方法

方法 作用
put(Object key,Object value) 增加键和值
putAll(Map m) 增加Map中的键值对

方法 作用
Object remove(Object key) 删除键值对,没有返回null
void cLear() 清空当前map中的所有数据

方法 作用
put(Object key,Object value) 更改也是put
putAll(Map m) 修改Map中的键值对

方法 作用
get(Object key) 查找
boolean containsKey(object kTy) 是否包含指定的key
boolean containsValue(Object value) 是否包含指定的value
boolean isEmpty() 判断当前map是否为空
boolean equals(object obj) 判断当前map和参数对象obj是否相等

长度

方法 作用
size() 返回长度(元素个数)

遍历

遍历Key集 Set keySet()
遍历Value集 Collection values()
遍历Entry集 Set entrySet()

TreeMap

底层使用红黑树存储;
可以按照添加的key-value中的key元素的指定的属性的大小顺序进行遍历。
需要考虑使用D自然排序2定制排序。
要求:向TreeMap中添加的key必须是同一个类型的对象。

Properties

一般作为属性文件,程序运行时读取属性文件实现了数据与属性的分离。
例如 在idea的配置文件中 “属性名字”=“属性值”,不能使用空格不然会有歧义


扫描二维码,在手机上阅读

推荐阅读: