`
samuschen
  • 浏览: 403617 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

LinkedHashMap和HashMap的比较使用

 
阅读更多

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会发生变化.

LinkedHashMap使用双向链表保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.HashMap里面存入的键值对在取出的时候是随机的,

 

也可以在构造时 用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

分享到:
评论

相关推荐

    HashMap,HashTable,LinkedHashMap,TreeMap的区别

    如果需要同步,可以选择 HashTable 或者使用 Collections 的 synchronizedMap 方法使 HashMap 或者 LinkedHashMap 具有同步的能力。 * 是否需要保持顺序?如果需要保持顺序,可以选择 LinkedHashMap。 * 是否需要...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    `HashMap`是一种基于哈希表实现的`Map`接口,提供了一个非同步的、允许使用`null`键和值的存储结构。`HashMap`通过计算对象的哈希码来存储和检索对象,这使得数据可以在常数时间内被访问。 - **特点**: - **非...

    java HashMap,TreeMap与LinkedHashMap的详解

    在示例中,`HashMap`、`Hashtable`和`TreeMap`的使用方式类似,但它们的行为不同。`Hashtable`与`HashMap`类似,但它是线程安全的,并且不接受null值。而`TreeMap`则根据键的自然顺序对键值对进行了排序。 ```java ...

    LinkedHashmap的使用

    总的来说,LinkedHashMap结合了HashMap的高效性和有序性的特点,适用于那些对元素顺序有特定需求但又希望保持高效性能的场景。在理解和使用时,需要注意其内部结构和排序方式,以便更好地利用其特性。

    HASHMAP排序功能描述

    HashMap是Java编程语言中常用的集合类之一,它属于哈希表...根据实际需求,可以选择使用LinkedHashMap或通过转换和排序来达到目的。理解这些方法及其背后的原理,可以帮助我们在编程中更灵活地处理数据结构和排序问题。

    Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结

    Map接口用于保存具有key-value映射关系的数据,常见的Map实现包括HashMap、TreeMap、HashTable和LinkedHashMap等。Queue是Java提供的队列实现。 本文总结了HashMap和HashTable的源码学习和面试总结,涵盖了它们的...

    Java集合系列(LinkedHashMap+LinkedList+ArrayList)

    LinkedHashMap 和 HashMap 的主要区别在于,LinkedHashMap 可以维护元素的顺序,而 HashMap 无法保证元素的顺序。LinkedHashMap 的这个特点使得它在某些场景下非常有用,例如实现 LRU 缓存。 LinkedList ...

    一文搞懂Java的LinkedHashMap.docx

    总的来说,LinkedHashMap结合了HashMap的高效查找和链表的顺序保持,是需要有序存储键值对场景下的理想选择。在理解HashMap的基础上,深入学习LinkedHashMap的内部机制,能够更好地应对各种数据结构的需求。

    ArrayList,HashMap

    HashMap不保证元素的顺序,如果需要保持插入顺序或根据特定规则排序,应考虑使用LinkedHashMap。 ArrayList和HashMap的使用场景有所不同。ArrayList适合于需要频繁进行随机访问且元素顺序重要的情况,比如作为数据...

    Map,HashMap,TreeMap的使用

    在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 Map 接口,都是 Map 的子类,每个子类都有其特点和使用场景。 HashMap HashMap 是最常用的 Map 实现类,它根据键的哈希码值存储数据,能够快速地存储和获取...

    hashmap 集合

    6. 使用接口而非实现类:在声明变量时,使用Map而非HashMap,这样在实际运行时可以更灵活地更换其他类型的Map,如LinkedHashMap,以改变元素的排序或性能特性。 CacheManager.java文件可能是一个用于管理缓存的类,...

    HashMap遍历

    为了验证这一点,我们可以使用时间差来比较两种遍历方式的效率: ```java Map, String&gt; map = new HashMap(); for (int i = 0; i ; i++) { map.put("key" + i, "value" + i); } long startTime = System....

    hashmap:提供快速的HashMap,LinkedHashMap和高阶函数到任何可迭代的函数,例如Array,Map或Set。 经过测试和基准测试的问题和PR

    HashMap和LinkedHashMap 描述 该项目提供了可在Node.js和浏览器上运行的HashMap和LinkedHashMap类。 它们都是像一样的简化实现 它使用改进的算法生成哈希。 这样可确保在所有铲斗上尽可能广泛地散布。 根据规范,...

    HashMap底层原理.pdf

    总的来说,HashMap在单线程环境下运行效率高,但在多线程环境下需要谨慎使用,且对于需要有序遍历的场景,可以考虑使用LinkedHashMap。对于需要排序的映射场景,建议使用TreeMap。在使用TreeMap时,key需要实现...

    Hashmap 通过对VALUE排序 源代码

    HashMap本身并不支持对值的排序,因为它内部使用哈希表实现,主要关注的是键的哈希计算和冲突解决,而不是元素的顺序。如果需要对HashMap的值进行排序,我们可以采用以下几种方法: 1. 使用TreeMap:TreeMap是一个...

    java课件-HashMap

    5. 无序性:HashMap中的键值对插入顺序与遍历顺序不一定相同,除非使用LinkedHashMap,它在保持HashMap特性的基础上提供了有序性。 在使用HashMap时,需要注意以下几点: 1. 自定义键类需重写equals()和hashCode()...

    LinkedHashMap

    - **线程非安全**:与`HashMap`一样,`LinkedHashMap`不是线程安全的,因此在多线程环境下,需要使用`Collections.synchronizedMap()`来同步,或者使用`ConcurrentHashMap`代替。 - **空间开销**:相比于`HashMap`...

    详解Java中LinkedHashMap

    详解Java中LinkedHashMap Java中的LinkedHashMap是HashMap的一个子类,主要解决了HashMap的两个问题...LinkedHashMap是Java中一个非常重要的数据结构,掌握LinkedHashMap的使用和原理对我们在Java开发中的帮助非常大。

Global site tag (gtag.js) - Google Analytics