• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

★JAVA★ 来源:一路向前! 2次浏览

前言


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是相等的。

总结




版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)