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

顾名思义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会发生变化。
时间: 2024-10-10 18:28:35

LinkedHashMap和HashMap的区别以及使用方法的相关文章

LinkedHashMap和HashMap的区别

一.问题描述: 前几天写webservices接口,需要同步人力资源,涉及到添加顺序:主账号需要添加在次账号之前,直接上级需要添加在下级之前.解析xml之后直接封装在HashMap中,导致取对象时顺序被打乱,随后封装在LinkedHashMap中得以解决. 二.主要区别: LinkedHashMap是比HashMap多了一个链表的结构.与HashMap相比LinkedHashMap维护的是一个具有双重链表的HashMap,LinkedHashMap支持2中排序一种是插入排序,一种是使用排序,最近

HashMap和LinkedHashMap,TreeMap的区别

1.具体区别如下: 我们在开发的过程中使用HashMap比较多,在Map中在Map 中插入.删除和定位元素,HashMap 是最好的选择. 但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好. 如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列. HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直 接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为null, 允许多条记录的值

HashMap、TreeMap、LinkedHashMap、hashtable的区别

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复     hashMap是hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许有空键值,由于非线程安全,效率上面可能高于Hashtable. HashMap允许将null作为一个entry的key或者value,而hashtable不允许 hashMap把hashtable的contains方法去掉了,改成了containsvalue和containsKey

HashMap、TreeMap、LinkedHashMap、hashtable的区别 小记

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复     hashMap是hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许有空键值,由于非线程安全,效率上面可能高于Hashtable.     HashMap允许将null作为一个entry的key或者value,而hashtable不允许     hashMap把hashtable的contains方法去掉了,改成了containsvalue和con

java集合List、Set、Map总结 + HashMap/Hashtable区别

List:(有序,可以重复)通过下标索引 ----ArrayList  可变数组,随机查找 ----LinkedList    链表,任何位置插入删除快 ----Vector    效率比arraylist低,但是可以用于多线程同步 Set:(无序,不可以重复)set最多有一个null元素,因为不可以重复 ----HashSet    没有排序,不重复(顺序随机) ----LinkedHashSet    按插入排序,不重复(按插入顺序) ----TreeSet    实现Comparable接

C# Hashtable 使用说明 以及 Hashtable和HashMap的区别

一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对. 二,哈希表的简单操作 在哈希表中添加一个key/value键值对:Hashta

WeakHashMap和HashMap的区别

看Java源码的时候,看到了 WeakHashMap ,我一直以来使用的 都是 HashMap,于是查了一下两者的区别 (一) 查看API文档,WeakHashmap要点如下: 1. 以弱键 实现的基于哈希表的 Map.在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条目.更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收.丢弃某个键时,其条目从映射中有效地移除 2. WeakHashMap 类的行为部分取决于

LinkedHashMap和HashMap的比较使用

昨天做一道题,用hashmap总是时间超时,后来看了看别人的分享,发现将HashMap换成LinkedHashMap就可以 同时拥有Linkedlist 和HashMap的好处了,同时节省了自己处理的时间.不错的数据结构! 下面是在网上找到的有关LinkedHashMap和HashMap的比较的说明,记录在此,加深记忆! import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; imp

LinkedHashMap和HashMap的比较使用(转)

由于现在项目中用到了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("**