`
dannyhz
  • 浏览: 369753 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

几种map的比较

 
阅读更多
引用

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列.


HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。

HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。


Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。


LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。


在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。

分享到:
评论

相关推荐

    遍历MAP的几种方法

    遍历MAP的几种方法,利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性

    map的遍历方法 有几种? 帮你选择最好的遍历方式

    你知道map的遍历方法有几种吗? 那这几种的区别是什么呢? 那种更简单、高效呢? 我的资源文件将告诉你。

    map遍历的四种方法

    详细介绍啦遍历map的几种方式,好吧,共有四种方式

    js 关于map set array等几种数据结构的介绍

    js 关于map set array等几种数据结构的介绍

    java_各个Map的区别

    java_各个Map的区别 ConcurrentHashMap 支持检索的完全并发和更新的所期望可调整并发的哈希表。(线程安全)此类遵守与 Hashtable 相同的功能规范,并且包括对应于 Hashtable 的每个方法的方法版本。不过,尽管所有...

    JAVA遍历map的几种实现方法代码

    主要介绍了JAVA遍历map的几种实现方法,有需要的朋友可以参考一下

    Java Map 按值排序

    主要实现Java中Map集合按值排序的几种方法。

    java遍历Map的几种方法分析

    主要介绍了java遍历Map的几种方法,结合实例形式分析了使用循环与迭代等方法操作Map遍历的相关技巧,需要的朋友可以参考下

    java Map

    是java Map中几种常用的遍历方法,适合于新手,谢谢

    Map、Set、Iterator迭代详解

    Map接口定义了四种类型的方法,每个Map都包含这些方法。 equals(Object o)比较指定对象与此Map的等价性。 hashCode()返回此Map的哈希码。 Map定义了几个用于插放和删除元素的变换方法。 remove(Object key) 从Map中...

    Java Map的几种循环方式总结

    主要是对Java中Map的几种循环方式进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    3D全景制作软件(Visution Mapio Pro) V2.1.2 官方特别版.zip

    -Kinect的支持(在几种模式下) -DMX支持(像素映射) -以太网的分布式plaiyng /遥控器 Visution Mapio Pro使用方法: 1、首先运行压缩包中的安装程序进行安装原版程序! 2、复制压缩包中的Ck目录下的所有文件...

    java 遍历MAP的几种方法示例代码

    本文主要介绍java 遍历MAP的知识资料,这里整理几种方法及实现示例代码,有兴趣的小伙伴可以参考下

    Map获取键值,Map的几种遍历方法总结(推荐)

    下面小编就为大家带来一篇Map获取键值,Map的几种遍历方法总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    World Map Strategy Kit 2 V9.7.1

    - 包括2K至16K高分辨率的几种地球背景纹理和样式。 - 带有动画阴影的云层。 - 带有简单API的艺术和动画战争迷雾,可清除控制区域,国家或省的迷雾。 - 动画/厚实/光滑的国家边界!使用示例纹理或使用自定义颜色,...

    Java集合框架Map接口.pdf

    Map接口的实现类可以根据其内部数据结构的不同,分为几种类型,例如HashMap、TreeMap和LinkedHashMap等。不同的实现类具有不同的特点和性能特征,应该根据实际需求来选择合适的实现类。 Map接口中常用的方法 1. put...

    World Map Globe Edition 2 V14.5

    World Map Globe Edition 2 添加到您的场景一个美丽的互动三维世界地图,只需点击几下。将全局预置拖到您的场景中并自定义外观。 这个新的主要版本改进了视觉效果并支持标准/内置和LWRP。所有的新特性和改进都将...

    javaSE 关于IO几种读取方式的性能比较

    javaSE 关于IO几种读取方式的性能比较 1.二进制数据 2.字符数据 3.压缩文件

    对云计算中几种基础设施(Dynamo,Bigtable,Map/Reduce等)的朴素看法

    云计算的三大技术——Bigtable,Map/Reduce等的研究文章。。。。。。。。。

    谈谈Java中遍历Map的几种方法

    java中的map遍历有多种方法,从早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点。  先初始化一个map public class TestMap {  public static Map<Integer>...

Global site tag (gtag.js) - Google Analytics