集合下的Map

Map家族

一、HashMap:按key-value对方式存值,它的key是无序的、唯一的单一对象。底层采用数组+链表结构存值(其中链表节点数量超过一定限度(8个),链表会变成树状结构)

①优点:key的唯一性(通过hashCode()和equals()实现的)
②注意:HashMap的key的泛型类中要重写hashCode()和equals()才能实现根据值来实现对key的去重

二、TreeMap:按key-value对方式存值,它的key是无序的、可排序的、唯一的单一对象,底层采用二叉树结构存值

①优点:key可排序的,唯一的
②key的可排序性:通过排序器的排序方法返回负数排在前面(左子节点),返回正数排在后面(右子节点)
③key的唯一性(去重):通过排序器的排序方法返回0,表示key相同,key不存,value覆盖
④注意:TreeMap一定要用排序器,如果是用无参构造创建TreeMap,要求key的泛型所在类实现自然排序器接口(Comparable),重写排序方法(compareTo());如果是用有参构造创建TreeMap,要将自定义排序器(Comparator)对象作为参数传给TreeMap的构造方法,在自定义排序器类中重写排序方法(compare()).

排序器:自然排序器,自定义排序器(比较器排序器)

三、Hashtable:哈希表.线程安全,运行效率慢;不允许null作为key或者是value

四、HashTable VS HashMap
1.相同点:

按key-value对存值,它的key无序的唯一的单一对象,底层都采用数组+链表结构存值

2.不同点:

	①推出时间不同:HashTable在jdk1.2之前推出;
	HashMap在jdk1.2之后推出;
	②线程安全性不同:HashTable在单线程中使用效率低,在多线程中使用安全;
	    HashMap在单线程中使用效率高,在多线程中使用不安全;
	③是否能存null:HashTable的key和value都不可以存null;
	HashMap的key和value都可以存null;
	④初值和扩容不同:HashTable默认初始容量为11,按2倍+1扩容;
	    HashMap默认初始容量为16,按2倍扩容;
	⑤方法不同:HashTable拥有HashMap所有方法,且还拥有自己独有的方法。

五、Properties:继承自HashTable,按key-value对的方式存值,核心作用是可以通过流来动态加载配置文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值