【Java总结】——Java8增强的Map集合

前言


Map用于保存具体有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。

key和value关系


key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的,确定的value。从Map中取出数据时,只要给出指定的key,就可以取出对应的数据时。
如果把Map的两组值拆开来看,Map里的所有key组成了一个set集合(所有的key是没有顺序的,key与key之间不能重复)。
如果把Map里的所有value放在一起来看,它们类似于一个List,元素与元素之间可以重复,每个元素可以根据索引来查找,只是Map中的索引不再是整数值,而是以另一个对象作为所用。

HashMap和HashTable


区别
➢Hashtable是一个线程安全的Map实现,但是HashMap是线程不安全的实现,所以HashMap比Hashtable的性能高一点;但如果有多个线程访问同一个Map对象时,使用Hashtable实现类会更好。
➢Hashtable不允许使用null作为key和value,如果视图把null值放进Hashtable中,将会引发NullPointerException异常;但是HashMap可以使用null作为key或value。
由于HashMap里的key不能重复,所以HashMap里组多只有一个key-vlaue对的key为null,但可以有无数个key-value对的value为null。
相似
➢HashMap和Hashtable不能保证其中的key-value对的顺序;
➢HashMap和Hashtable判断两个key相等的标准:两个key通过equals()方法比较返回true,两个key的hashCode值也相等;
➢二者判断两个value相等的标准:只要两个对象通过equals()方法比较返回true即可;
➢二者包含一个containsValue()方法,用于判断是否包含指定的value;

LinkedHashMap


LinkedHashMap使用双向链表维护key-value对的次序(只考虑key的次序即可),该链表负责维护Map的迭代顺序,迭代顺序与key-value对的插入顺序保持一致。
LinkedHashMap需要维护元素的插入顺序,因此性能略低于HashMap的性能;但它以链表来维护内部顺序,所有在迭代访问Map里的全部元素时将会有较好的性能。

SortedMap接口和TreeMap实现类


TreeMap是一个红黑树数据结构,每个key-value对即作为红黑树的一个节点。TreeMap存储key-value对时,需要根据key进行排序。TreeMap可以保证所有的key-value对处于有序状态。
TreeMap两种排序方式:
➢自然排序
➢定制排序
TreeMap判断两个key相等的标准:两个key通过compareTo()方法返回0,TreeMap即认为两个key是相等的。

总结


这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值