根据自己的想法实现HashMap
我的思路:
1. 设置一个长度为26的数组,数组每个元素都指向一个单链表(现在认为,如果26改成26*2+10可能会更合理)
2. 哈希函数的选择:根据关键字的第一个字符,通过计算(mod 26的操作返回的值),找到数组对应的存储数据单链表
3. 单链表存储的数据的结构
typedef struct item
{
char* key;
char* value;
struct item *next;
}node;
4. 主要操作
put操作: 根据key找到对应的单链表,遍历该单链表,其中数据的key字段值与当前key相同,则更新该数据的value字段值.
get操作: 根据key找到对应的单链表,遍历该单链表,其中数据的key字段值与当前key相同,则找到,返回value字段值.
没想到我的想法是对的~~
以下摘自: http://zhangshixi.javaeye.com/blog/672697
HashMap的数据结构:
在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。
- 大小: 13.6 KB
分享到:
相关推荐
2. 散列表(HashMap):散列表是一种常用的数据结构,用于存储键值对,它提供了快速的查找、插入和删除操作。题目中提到的可能是指如何设计一个散列函数,使得数据均匀分布,避免冲突,以提高效率。这通常需要考虑...
【数据结构与算法】:在Java笔试题中,常见数据结构如数组、链表、栈、队列、树、图等,以及排序(如冒泡排序、快速排序、归并排序)和查找(如二分查找、哈希查找)算法的实现和应用是重点考察内容。对于复杂度分析...
第三部分是系统设计题,关注的是百度搜索引擎中的拼音提示功能的实现和优化。 【编程题解析】: 1. 题目要求找出短时间内频繁访问的IP(即攻击IP)。首先,需要读取IP访问信息,数据包括IP地址和访问时间,且数据已...
综上所述,"大厂数据结构算法真题.zip"中的内容将涵盖广泛的编程基础知识,包括但不限于数据结构的选择和实现、算法的设计和优化、以及在Java语言中的具体应用。通过系统学习和练习这些真题,不仅可以提升技术能力,...
题目可能要求设计简单的类结构,实现继承或接口,或者解释多态的原理。 3. **数据结构与算法**:常见的数据结构如数组、链表、栈、队列、树、图,以及排序和查找算法(如冒泡排序、快速排序、二分查找等)可能会...
HashMap 中的 get()方法是如何实现的? . HashMap 可以用在哪些场景? . JVM,垃圾回收机制,内存划分等 . SQL 优化,常用的索引? . 还有什么问题需要问的。 多线程状态图,状态如何流转? . 死锁,死锁原因 . 页...
- **HashMap**:HashMap是最常用的Map实现,它提供了高效的查找和插入操作,但不是线程安全的。允许存储null键和值。 - **LinkedHashMap**:与HashMap相比,LinkedHashMap维护了一个插入顺序或访问顺序的双向链表,...
【Java面试经验】这篇文档包含了多个技术面试题,主要涉及C语言编程、算法、操作系统、数据结构和网络等领域的知识。下面将逐一解析这些题目所涵盖的Java面试知识点。 1. **C语言实现字符串倒序**:这道题虽然不是...
【标题】:“百度面试题1” 【描述】:这部分内容主要涵盖了Java编程语言中的关键概念,包括抽象类、接口、基本数据类型、数组操作、HashMap的实现原理、接口与抽象类的区别、面向对象的四大特性(抽象、封装、继承...
这份"2020 Java经典面试题总汇"很可能包含了各种难度层次的问题,旨在测试候选人在核心概念、数据结构、算法、多线程、集合框架、JVM、网络编程以及设计模式等多个方面的掌握程度。 1. **核心概念** - Java的基础...
10. **设计模式**:单例模式、工厂模式、装饰器模式等常见设计模式的实现和应用。 **C#知识点** C#作为.NET平台的主要语言,其笔试题涵盖: 1. **基础语法**:C#的变量、类型、表达式和语句,命名空间,属性和...
在笔试中,求职者可能需要展示如何利用Java的特性解决实际问题,如设计一个多线程下载器或实现一个简单的网络通信程序。 数据结构是程序设计的基石,它涵盖了从基本的数组、链表到复杂的树、图和哈希表等。这些结构...
【百度测试工程师】笔试题目主要涵盖三个方面:简答题、编程题和设计题,这些题目旨在考察应聘者的基础知识掌握、编程能力和系统设计能力。 一、简答题 1. extern "C" { } 是C++中用来处理C语言库的一个关键语法。...
这份"百度Java笔试面试题.zip"包含了丰富的面试资源,旨在帮助求职者更好地理解和应对Java相关的技术问题。以下是一些核心Java知识点的详细阐述: 1. **基础语法**:熟悉Java的基础语法是面试的第一步,包括变量、...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
历年真题中会有大量的案例分析题,要求考生能够设计并实现简单的类结构,或者分析已有的代码片段,这有助于考生提升实际编程能力。 再者,异常处理是Java程序健壮性的重要保证。考生需要熟悉try-catch-finally语句...
总之,"JAVA语言程序设计基础篇课后编程题答案"这份资源是Java学习者宝贵的参考资料,它鼓励我们通过实践来巩固理论知识,不断提升编程技巧,为成为一个合格的Java开发者打下坚实的基础。无论是为了求职还是个人兴趣...
总的来说,百度Java开发面试题涉及了Java语言基础、并发编程、数据库、框架、网络通信、设计模式和系统架构等多个方面,全面考察候选人的综合能力。准备面试时,候选人需要深入理解这些知识点,并能结合实际项目经验...
3. **集合框架**:List、Set、Map接口及其实现类如ArrayList、LinkedList、HashSet、HashMap等的使用和底层原理。 4. **异常处理**:理解异常的分类,如何抛出、捕获和处理异常,以及try-catch-finally语句块的运用...
- **HashMap与HashSet原理**:深入探讨HashMap和HashSet的内部实现机制,包括哈希码计算、负载因子等核心概念。 #### 四、异常处理 - **异常体系结构**:掌握Java异常处理机制的基本结构(Throwable、Exception、...