由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class TestLinkedHashMap {
  public static void main(String args[])
  {
   System.out.println("*************************LinkedHashMap*************");
   Map<Integer,String> map = new LinkedHashMap<Integer,String>();
   map.put(6, "apple");
   map.put(3, "banana");
   map.put(2,"pear");
   
   for (Iterator it =  map.keySet().iterator();it.hasNext();)
   {
    Object key = it.next();
    System.out.println( key+"="+ map.get(key));
   }
   
   System.out.println("*************************HashMap*************");
   Map<Integer,String> map1 = new  HashMap<Integer,String>();
   map1.put(6, "apple");
   map1.put(3, "banana");
   map1.put(2,"pear");
   
   for (Iterator it =  map1.keySet().iterator();it.hasNext();)
   {
    Object key = it.next();
    System.out.println( key+"="+ map1.get(key));
   }
  }
}

运行结果如下:

*************************LinkedHashMap*************
6=apple
3=banana
2=pear
*************************HashMap**************************
2=pear
6=apple
3=banana

分析:LinkedHashmap 的特点是put进去的对象位置未发生变化,而HashMap会发生变化.

再普及下:

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时,得到的记录是排过序的。

转载于:https://www.cnblogs.com/zjdxr-up/p/7142539.html

HashMap和LinkedHashMap的比较使用相关推荐

  1. 彻底理解HashMap及LinkedHashMap

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/fuzhongmin05/article/details/104355841 Ha ...

  2. java linkedhashmap_java学习-hashMap和linkedHashMap

    1.hashMap和linkedHashMap和treeMap 1 * LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的. 2 * HashMap无序:Link ...

  3. 深入理解HashMap和LinkedHashMap的区别

    文章目录 简介 LinkedHashMap详解 插入 访问 removeEldestEntry 总结 深入理解HashMap和LinkedHashMap的区别 简介 我们知道HashMap的变量顺序是 ...

  4. Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)

    关注微信公众号:CodingTechWork,一起学习进步. Map Map集合介绍   Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何 ...

  5. TreeMap、HashMap、LinkedHashMap的区别

    TreeMap.HashMap.LinkedHashMap的区别:

  6. Map接口、HashMap、LinkedHashMap

    Map接口.HashMap.LinkedHashMap 1. 概述 Map接口和Collection接口是完全不同的,Collection<E>接口是单列集合,就一个泛型:Map<K ...

  7. HashMap、LinkedHashMap、TreeMap的深入认识

    HashMap,LinkedHashMap,TreeMap都属于Map. Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复. HashMap 是一个最 ...

  8. HashMap和LinkedHashMap的区别

    转自:https://www.cnblogs.com/yuexzh/p/7486264.html HashMap,LinkedHashMap,TreeMap都属于Map Map 主要用于存储键(key ...

  9. java HashMap和LinkedHashMap区别

    我们用的最多的是HashMap,在Map 中插入.删除和定位元素,HashMap 是最好的选择.但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好.如果需要输出的顺序和输入的相同,那么用 ...

最新文章

  1. python3内置函数详解
  2. python简单编程-编程中最简单的语言Python,这样学或许更容易
  3. 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器
  4. BFPTR算法详解+实现+复杂度证明
  5. 利用Seafile搭建私有文件同步云盘
  6. Python学习笔记之Windows下通过pip安装PyMySQL
  7. 微信小程序头部导航栏自定义
  8. 二级c语言试卷合集pdf,全国计算机二级C语言历年真题完整版.pdf
  9. 人脸识别的人像处理流程是怎样的?
  10. 【Unity】【Odin Inspector】关于AOT Generation
  11. 图片灯箱插件-lightBox
  12. 【智能制造】歌尔股份打造面向可重构和微服务的可穿戴产品智慧工厂
  13. Java实习(一维)线性回归方程
  14. 硬件接口之RGB888(RGB24)
  15. leetcode5454
  16. 计算机网络五层协议(TCP/IP)与七层协议(OSI)的关系与区别【计算机网络】
  17. 数字视频处理(五)——频率域陷波滤波
  18. 【R-FCN】《R-FCN: Object Detection via Region-based Fully Convolutional Networks》
  19. Windows10下CUDA与cuDNN的安装
  20. 千里之行,始于驭风——咕咚新款21k驭风跑鞋体验

热门文章

  1. 修饰符(public/private/default/protected)
  2. SQL 常用数据类型汇总
  3. error: expected ‘{‘ before ‘;‘ token
  4. Servlet 单例多线程
  5. 王爽汇编语言实验7一个很好的解法(转)
  6. 不用eclipse创建第一个servlet
  7. STM32开发 -- 进制与字符串间的转换
  8. STM32开发 -- Keil使用(2)
  9. Hi3516A开发--/etc/passwd
  10. 汇编语言LAHF和SAHF指令