Java Map集合小结

Java Map集合小结

Map集合
按<键,值>对的形式存储元素
put( k, v), containsKey( k ), containsValue( v ) , get( k ), remove( k )
keyset() , values(), entrySet()
HashMap
底层是哈希表(散列表), 哈希表就是一个数组, 数组的每个元素是一个单向链表
HashTable
底层是哈希表, 它是线程安全的, HashMap不是线程安全的
初始化容量:11, HashMap初始化容量: 16
加载因子: 0.75, 当<键,值>对的数量大于 哈希桶容量 * 加载因子时, 哈希桶扩容

HashTable默认扩容: 2倍 + 1 , HashMap扩容: 2倍

HashTable的键与值都不能为null, HashMap的键与值可以为null

创建HashTable时, 可以指定初始化容量; HashMap会自动把初始化容量调整为2的幂次方,就是为了快速计算数组的下标
Properties
Properties
继承了HashTable, 键与值都是String类型

经常用于设置/读取系统属性值

一般情况下, 系统属性会保存在配置文件中, 可以通过Properties读取配置文件的内容, 也可以使用ResouceBundle读取配置文件的属性
TreeMap
实现了SortedMap接口, 可以根据键自然排序, 要求键必须是可比较的

要么指定Comparator比较器, 如果没有Comparator比较器,键需要实现Comparable接口

Comparator比较与Comparable如何选择?

对于TreeMap来说, 先根据Comaparator比较器进行比较大小 , 如果没有Comparator比较器, 再选择Comparable接口。

对于开发人员来说, 一般通过实现Comparable接口定义一个默认的比较规则 , 通过Comparator比较器定义若干不能同的排序规则。
如何选择Map?
如果不需要根据键排序就选择HashMap, 如果需要根据键排序就选择TreeMap。

如果在多线程程序中, 使用java.util.concurrent包中的类,如果不需要根据键排序选择ConcurrentHashMap, 如果需要根据键排序选择ConcurrentSkipListMap

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值