1.HashMap:

   HashMap里面存入的键值对在取出的时候是随机的,是比较常用的Map.它根据key的HashCode值存储数据,根据key可以直接取出它的值(当然也有冲突的情况,不过遍历链表就可了),具有很快的访问速度。在Map中插入、删除和定位元素,HashMap是最好的选择(因为它不必为元素的排序而消耗开销)。

  

2.LinkedHashMap

LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。

(1)LinkedHashMap的 Entry[]数组存储结构和HashMap的类似如上图所示:

不同的是,LinkedHashMap多了一个双向链表:

-----------------------

    LinkedHashMap是HashMap的子类,LinkedHashMap是为了解决遍历Hash表的无序问题,它内部维护了一个链表用于记录你插入元素(或你访问元素的顺序)的位置,遍历时直接遍历链表,元素的顺序即为你插入的顺序,同时Entry对象要多加两个成员变量before和after用于记录链表的前驱和后继。所以LinkedHashMap的的存储效率要低于HashMap,但是遍历效率要高于HashMap。 
根据链表中元素的顺序可以分为:按插入顺序的链表,和按访问顺序(调用get方法)的链表。  
默认是按插入顺序排序,如果指定按访问顺序排序,那么调用get方法后,会将这次访问的元素移至链表尾部,不断访问可以形成按访问顺序排序的链表。  可以重写removeEldestEntry方法返回true值指定插入元素时移除最老的元素。 

转:http://hi.baidu.com/yao1111yao/item/d924ca947ec6d733336eeb91

LinkedHashMap和HashMap的更多相关文章

  1. LinkedHashMap和HashMap的比较使用(转)

    (转)http://www.cnblogs.com/hubingxu/archive/2012/02/21/2361281.html import java.util.HashMap; import  ...

  2. LinkedHashMap和HashMap的比较使用

    由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下. import java.util.HashMap; import java.util.Iterator; import ...

  3. LinkedHashMap和HashMap区别

    import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.uti ...

  4. LinkedHashMap和HashMap的比较使用(转载)

    LinkedHashMap和HashMap的比较使用 ? import java.util.HashMap; import java.util.Iterator; import java.util.L ...

  5. LinkedHashMap和HashMap的比较使用 由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。 ? import java.util.HashMap; impo

    LinkedHashMap和HashMap的比较使用 由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下. import java.util.HashMap; import ...

  6. LinkedHashMap和HashMap的比较使用 详解

    由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下. import java.util.HashMap; import java.util.Iterator; import ...

  7. LinkedHashMap与HashMap的使用比较

    现在由于项目需要,使用了LinkedHashMap,一开始由于很少用到Map,然后就直接使用了HashMap,在将数据成功存入之后取出来就出了问题,数据输出顺序没有按预期顺序输出,现在先看代码: 文件 ...

  8. LinkedHashMap和HashMap的区别

    一.问题描述: 前几天写webservices接口,需要同步人力资源,涉及到添加顺序:主账号需要添加在次账号之前,直接上级需要添加在下级之前.解析xml之后直接封装在HashMap中,导致取对象时顺序 ...

  9. 转:LinkedHashMap和HashMap的比较使用

    import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.uti ...

随机推荐

  1. Heartbeat实现热备

    1.环境准备:1)主节点:master eth0:192.168.0.201 eth1:192.168.0.03 2)备节点:slave eth0 :192.168.0.215 eth1:192.16 ...

  2. elasticsearch例子(crud + 分页)

    概述 基于elasticsearch2.3.3写的入门demo,含有创建index,删除index,录入数据,查询.以及分页,并且使用流行的ik分词器.测试方式:使用 JNUIT TEST 来运行. ...

  3. HTML 5.2 新特性介绍

    本文译自 What's New in HTML 5.2? 作者 Ire Aderinokun,是一位前端开发者和 UI 设计师. 就在不到一个月之前,HTML 5.2 成为了 W3C 的官方推荐规范( ...

  4. mac攻略(3) -- brew使用

    [http://www.cnblogs.com/redirect/p/6131642.html] 1.介绍 brew是一个软件包管理工具,类似于centos下的yum或者ubuntu下的apt-get ...

  5. Apache、Lighttpd、Nginx 三种web服务器对比

    简介 1.    Apache Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.Apac ...

  6. Git 上传 GitHub

    1.下载 2.安装 3.功能识别 3-1.查看git版本  git  --version 3-2.移除原来的版本 yum  remove git 4.配置 4-1.用户配置信息 git config ...

  7. @Scope注解

    @Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)这个是说在每次注入的时候回自动创建一个新的bean实例 @Scope(value=Config ...

  8. 高并发关于微博、秒杀抢单等应用场景在PHP环境下结合Redis队列延迟入库

    第一步:创建模拟数据表. CREATE TABLE `test_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NUL ...

  9. uva1343 IDA*

    这题需要用数组记录每个block的位置.启发函数:d+wa(8-当前最多相同个数)>maxd直接退出 AC代码: #include<cstdio> #include<cstri ...

  10. soj1091 指环王 bfs+hash+剪枝

    原题链接http://acm.scu.edu.cn/soj/problem.action?id=1091 这题的主要解法就是搜索,我用的是bfs,用map将二维数组处理成字符串作为主键,到达当前状态的 ...