LinkedHashMap和HashMap的区别以及使用方法

来源:互联网 发布:监控软件 linux 排行 编辑:程序博客网 时间:2024/05/22 11:44

 顾名思义LinkedHashMap是比HashMap多了一个链表的结构。与HashMap相比LinkedHashMap维护的是一个具有双重链表的HashMap,LinkedHashMap支持2中排序:一种是插入排序,一种是使用排序,最近使用的会移至尾部例如 M1 M2 M3 M4,使用M3后为 M1 M2 M4 M3了,LinkedHashMap输出时其元素是有顺序的,而HashMap输出时是随机的,如果Map映射比较复杂而又要求高效率的话,最好使用LinkedHashMap,但是多线程访问的话可能会造成不同步,所以要用Collections.synchronizedMap来包装一下,从而实现同步。其实现一般为:

Map<String String> map = Collections.synchronizedMap(new LinkedHashMap(<String String));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会发生变化.

0 0
原创粉丝点击