我是靠谱客的博主 甜美香烟,最近开发中收集的这篇文章主要介绍map的分类和常见的情况HashMap:HashTable: LinkedHashMap:TreeMap:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Map是个接口,他有四个常用的实现类:HashTable、HashMap、TreeMap、LinkedHashMap

Map主要用于存储键值对,根据键得到值,因此不允许键重复(如果重复的话,后插入的键值对会覆盖原先的通名的键值对),但是值允许重复。

HashMap:

        HashMap根据键的hashcode值存储数据,大多数情况下可以直接定位到值,所以访问速度很快;它是无序存储数据的,所以遍历顺序不确定;HashMap最多只允许有一个记录的键为null,可以允许多个记录的值为null;HashMap非线程安全,不支持线程同步(线程同步:在一个线程访问内存的时候,其他的线程不可以对这个内存进行操作,必须等待这个线程操作结束,其他线程才能对该内存进行操作),如果同时有多个线程操作HashMap,可能会导致数据不一致;如果需要同步,可以使用Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

HashMap的遍历速度和它的容量有关。

HashTable:

        HashTable和HashMap比较相似,但是它是继承Dictionary类,并且它是线程安全的,因此HashTable写入速度较慢。它

不允许键或值为null。建议使用HashMap,之前从哪里看到过,HashMap就是为了替代HashTable的。如果需要同步,就使用ConcurrentHashMap。

 LinkedHashMap:

 LinkedHashMap是HashMap的子类,保存了记录的插入顺序,使用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的数据,也可以在构造的时候带参数,按照访问次序排序。

 LinkedHashMap的遍历速度只和实际数据有关。

遍历数据,如果需要输出的顺序和输入的顺序相同,可以选择 LinkedHashMap。

TreeMap:

TreeMap实现了SortedMap,顾名思义,它是按照一定顺序存储数据的,他能够把保存的记录根据键排序,默认是根据键升序排序,也可以指定排序的比较器;用Iterator遍历TreeMap时,得到的数据是排好序的。如果需要排序的映射,建议使用TreeMap。TreeMap的key必须实现Comparable接口或者在构造TreeMap时传入自定义的Comparator,否则会报ClassCastException类转换异常。

 

在实际情况中,HashMap是最常用的,因为在Map中插入,删除,定位元素,HashMap是最好的选择。

但是如果遍历数据的话,就需要根据实际情况考虑了。

 

 

最后

以上就是甜美香烟为你收集整理的map的分类和常见的情况HashMap:HashTable: LinkedHashMap:TreeMap:的全部内容,希望文章能够帮你解决map的分类和常见的情况HashMap:HashTable: LinkedHashMap:TreeMap:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部