`
wwt_cxy001
  • 浏览: 9882 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

程序员必须知道的数据结构:HashMap 与 LinkedHashMap

阅读更多

为什么要说 HashMap 与 LinkedHashMap?第一:这两种数据结构是 Java Coder 中经常使用的数据结构、第二:这两种结构是最合适的能说明链表与数组的结构关系。在开始之前首先必须清楚一个概念,什么是 hash 值?hash 值是指将一个二进制的值通过 hash 算法将其转换成一个固定长度的二进制的值。

我们通常使用的 Map 结构是通过什么方式存储数据的?它是通过数组与链表结合的形式来进行数据存储的。在前面小节的说明中我们知道,线性表的查询速度是比较快的、链表的插入速度是比较快的。而 Map 就是将两者结合起来,数据结构外围使用数组、内部使用链表的形式来存储数据,通过 hash 值来实现寻址快速、插入相对快速的效果,下面通过图片来看一下 hash 表中常见的数据结构展示 – 拉链法。

在这里插入图片描述

这种形式的存储结构就是我们平常所使用的 HashMap 的数据结构,如图中,0~12 组成一个数组,每个位置中又存放着一个链表,而链表中的每个数据对象内部又是通过键值对的形式来存放数据元素的。

在这里插入图片描述

这张图展示的是 LinkedHashMap 的数据结构图,和 HashMap 不同的是,它的链表里面的数据元素存储是有序的。其中最大的不同就是 LinkedHashMap 是一个双向链表,如果在使用时数据结构比较复杂(比如:一层又包含着一层的数据对象)、要求效率比较高的话,最好使用 LinkedHashMap,可以使用下面代码解决 LinkedHashMap 线程不同步的问题。

Map<String,Object> map = Collections.synchronizedMap(new LinkedHashMap<String,Object>());

同样,HashMap 也是线程不同步的,也可以使用 Collections.synchronizedMap() 方法来使线程安全,在 Jdk1.8 之后增加的 ConcurrentHashMap 实例是线程安全的,如果高版本尽量使用这种方式。

Map<String, Object> map2 = new ConcurrentHashMap<String, Object>();

更多精彩前往微信公众号【老王说编程】>>>
在这里插入图片描述

分享到:
评论

相关推荐

    java数据结构(老外那版,翻译的)

    5. **哈希表**:通过键值对进行快速查找的数据结构,Java的HashMap和LinkedHashMap是典型实现,提供了O(1)的平均查找时间。 6. **树**:分层的数据结构,包括二叉树、平衡树(如AVL树和红黑树),在搜索、排序等...

    Java程序员面试题与经验工与总结.docx

    本文总结了 Java 程序员面试中常见的知识点和经验总结,涵盖了 Java 基础、多线程、IO 与 NIO、虚拟机、设计模式、数据结构与算法、计算机网络、操作系统、主流框架、数据存储、分布式系统等方面的知识点。...

    JAVA程序员面试经常遇到的面试题和笔试题

    - Map接口及其实现类:HashMap、LinkedHashMap、TreeMap的区别和应用场景。 - CopyOnWriteArrayList与ConcurrentHashMap:适用于高并发读取场景的集合类。 5. **设计模式**: - 工厂模式、单例模式、建造者模式...

    java程序员笔试面试宝典(一典在手,面试无忧)

    - Map接口及其实现类:HashMap、LinkedHashMap、TreeMap等,理解键值对的概念。 - 集合操作:遍历、添加、删除、查找等基本操作,以及集合的流式编程。 6. **泛型**: - 泛型的基本概念:理解类型参数化和边界。...

    Java程序员面试题

    - **Map接口**:HashMap、LinkedHashMap、TreeMap、Hashtable等的区别和使用。 - **泛型**:理解其作用,以及类型通配符、边界限定等。 3. **Java内存管理**: - **垃圾回收机制**:理解GC的工作原理,新生代、...

    Java工具包提供了强大的数据结构

    随着Java集合框架的引入,如 List、Set 和 Map 接口,以及它们的实现类如 ArrayList、LinkedList、HashSet、TreeSet、HashMap、LinkedHashMap 等,Java的数据结构和操作变得更加灵活和高效。这些现代数据结构提供了...

    java程序员面试宝典第二版机密面试题

    Java程序员面试宝典是众多求职者和准备...以上仅是部分可能涉及的知识点,面试宝典中还可能包含数据库操作、设计模式、算法与数据结构、性能优化、分布式系统等内容,全面涵盖了一个合格Java程序员所需掌握的技术领域。

    Java数据结构和算法

    在编程领域,数据结构和算法是核心基础,对于任何开发者来说,尤其是Java程序员,深入理解这两者至关重要。本文将基于给定的标题“Java数据结构和算法”以及描述,详细阐述相关知识点,并不局限于压缩包内提供的...

    华为面试题目java程序员该看看

    10. **算法与数据结构**:虽然Java面试可能不涉及复杂的算法,但基础的数据结构(数组、链表、树、图)和基础算法(排序、查找)的掌握是必须的。 11. **异常处理**:理解异常的分类,何时抛出异常,如何正确捕获和...

    Java程序员面试秘技-陈浩

    13. **算法与数据结构**:面试中往往也会考察基础的算法知识,如排序(快速排序、归并排序、冒泡排序等)、查找(二分查找、哈希查找)、图和树等数据结构。 这本书作为面试宝典,不仅讲解了上述技术点,还可能包括...

    黑马程序员面试宝典(java)2018版

    - Map接口及其实现类:HashMap、TreeMap、LinkedHashMap等的差异和应用场景。 - 集合与数组的转换:使用toArray()方法和Arrays.asList()方法。 5. **泛型** - 泛型的基本概念:了解类型参数、边界、通配符等泛型...

    Java数据结构和算法第二版

    《Java数据结构和算法第二版》是一本深入探讨如何在Java编程环境中实现和应用数据结构与算法的权威著作。本书的焦点在于理解这些基础概念,它们对于任何软件开发者,特别是Java程序员来说,都是构建高效解决方案的...

    JAVA程序员培训定制课程

    2. Map接口:HashMap、TreeMap、LinkedHashMap等,以及键值对的概念。 3. 遍历集合:迭代器和foreach循环的使用。 五、输入/输出流 1. 文件操作:读写文件,掌握File类和FileInputStream/FileOutputStream的使用。 ...

    Java程序员(软件工程师)必读

    - Map接口:掌握HashMap、TreeMap、LinkedHashMap的特性,理解键值对的概念。 - Collections工具类:学习如何使用Collections进行集合的操作,如排序、查找等。 5. **IO流** - 文件操作:学习如何读写文件,使用...

    Java程序员集合框架面试题.pdf,这是一份不错的文件

    4. **HashMap与Map**:Map接口定义了一个存储键值对的容器,而HashMap是Map的一个实现,使用哈希表数据结构。HashMap提供了快速的查找和插入操作,但不保证元素的顺序。 5. **HashMap与HashTable的区别**: - ...

    java数据结构和算法实现.zip

    Java数据结构和算法实现是一个深度探讨编程基础的重要主题,它涉及到如何高效地组织和操作数据。数据结构是存储和组织数据的方式,而算法是解决问题或执行任务的特定步骤。在这个zip文件中,"ljg_resource1"可能是一...

    数据结构和Java集合框架

    总的来说,数据结构和Java集合框架是Java程序员必备的知识,它们构成了程序设计的基础,对于提升编程技能和解决实际问题有着重要的作用。通过阅读提供的"数据结构和Java集合框架.pdf"文档,你可以系统地学习和复习这...

    数据结构实验及相关代码(java)

    数据结构是计算机科学中的核心概念,它涉及到如何高效地存储和组织数据,以便进行各种操作。在Java编程中,理解并能熟练应用数据结构对于提升程序的性能和可维护性至关重要。本实验提供了关于数据结构的实践案例和...

    变态级JAVA程序员面试32问.rar_程序员面试_面试

    12. **数据结构与算法**:数组、链表、栈、队列、树(二叉树、平衡树AVL、红黑树)、图、排序算法(冒泡、快速、归并、堆)、查找算法(二分查找、哈希查找)等。 13. **框架与库**:可能涉及其他流行框架如MyBatis...

    Java数据结构和算法中文第二版

    《Java数据结构和算法中文第二版》是一本深入探讨Java编程中数据结构和算法的书籍。数据结构是计算机科学的基础,它涉及到如何有效地存储和组织数据,以便在各种操作中提高效率。算法则是解决问题的步骤描述,是编程...

Global site tag (gtag.js) - Google Analytics