集合两大类之map集合

Map集合
Map集合是按<键,值>对的形式存储数据
Map集合的结构图
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述HashMap工作原理
在这里插入图片描述在这里插入图片描述

  • HashMap特点:
    1. 底层是哈希表, 哈希表是一个数组, 该数组是在第一次put时才初始化
    1. 默认初始化容量: 16
    1. 默认加载因子: 0.75 , 当<键,值>对的数量>容量 * 加载因子时, 数组扩容
    1. 扩容: 2倍大小
    1. 在定义HashMap时,可以指定初始化容量, 最好是2的幂次方,如果不是系统会自动调整为2的幂次方
  •  	为了快速计算数组的下标
    
    1. HashMap的键与值都可以为null

4.11 HashTable

  • HashTable
  • 1)底层是哈希表, 它是线程安全的, HashMap不是线程安全的
  • 2)默认初始化容量:11
    1. 加载因子: 0.75
    1. 扩容: 2 倍 + 1
    1. HashTable也可以指定初始化容量, 不调整大小
    1. HashTable中的键与值都不能为null

4.12 Properties
Properties继承了HashTable, 键与值都是String类型
使用Properties设置/读取系统属性值

4.13 TreeMap
TreeMap类实现了SortedMap接口, 可以根据键自然排序, 要求键必须是可比较的. 可以在构造方法中指定Comparator比较器, 如果没有指定Comparator比较器,要求键实现Comparable接口
在这里插入图片描述
Map小结
Map是按<键,值>对的形式存储数据
put( k , v ) remove( k ) containsKey(k) containsValue(v) get(k)
keyset() values() entrySet() size()

---- HashMap
底层是哈希表(散列表), 是一个数组,数组的每个元素又是一个单向链表
默认初始化容量: 16
加载因子: 0.75 <键,值>对的数量>容量 * 加载因子扩容
扩容: 2倍
键与值可以为null
可以指定初始化容量, 系统会自动调整为2的幂次方, 为了快速计算数组的下标

---- HashTable
底层是哈希表, 它是线程安全的, HashMap不是线程安全的
默认初始化容量: 11
加载因子: 0.75
扩容: 2倍 + 1
键与值都不能为null
可以指定初始化容量, 不调整大小
--------Properties
继承了HashTable, 键与值都是String类型
经常用于设置/读取系统属性,
setProperty( 属性名, 属性值) getProperty(属性名)
经常使用Properties读取配置文件信息, 一般情况下在src目录中单独创建一个resources资源文件夹, 在该文件夹中添加配置文件, 在配置文件中保存系统属性, 配置文件扩展名是.properties

---- TreeMap
实现了Sortedmap接口, 根据键自然排序, 要求键必须是可比较的的
在创建TreeMap时在构造方法中指定Comparator比较器, 如果没有Comparator比较器,要求键实现Comparable接口
TreeMap中的键是根据二叉树原理排序的

-----------应用场景------------------------------------------------------------------------------------------
需要保存<键,值>对时选择Map集合
如果不需要根据键排序就选择HashMap
如果需要根据键排序就选择TreeMap, 注意不能根据值排序
注意**************************************************
遇到了HashMap, HashTable等集合,需要重写键的equals()/hashCode()方法
在TreeMap中,判断键是否重复, 根据比较结果是否为0来判断的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值