1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
|
package org.vocano.java.tst;
import java.util.*;
public class SimpleHashMap<K,V> extends AbstractMap<K,V> { // Choose a prime number for the hash table // size, to achieve a uniform distribution: static final int SIZE = 997; // You can't have a physical array of generics, // but you can upcast to one: @SuppressWarnings("unchecked") LinkedList<SimpleEntry<K,V>>[] buckets = new LinkedList[SIZE]; public V put(K key, V value) { V oldValue = null; int index = Math.abs(key.hashCode()) % SIZE; if(buckets[index] == null) buckets[index] = new LinkedList<SimpleEntry<K,V>>(); LinkedList<SimpleEntry<K,V>> bucket = buckets[index]; SimpleEntry<K,V> pair = new SimpleEntry<K,V>(key, value); boolean found = false; ListIterator<SimpleEntry<K,V>> it = bucket.listIterator(); while(it.hasNext()) { SimpleEntry<K,V> iPair = it.next(); if(iPair.getKey().equals(key)) { oldValue = iPair.getValue(); it.set(pair); // Replace old with new found = true; break; } } if(!found) buckets[index].add(pair); return oldValue; } public V get(Object key) { int index = Math.abs(key.hashCode()) % SIZE; if(buckets[index] == null) return null; for(SimpleEntry<K,V> iPair : buckets[index]) if(iPair.getKey().equals(key)) return iPair.getValue(); return null; } public Set<Map.Entry<K,V>> entrySet() { Set<Map.Entry<K,V>> set= new HashSet<Map.Entry<K,V>>(); for(LinkedList<SimpleEntry<K,V>> bucket : buckets) { if(bucket == null) continue; for(SimpleEntry<K,V> mpair : bucket) set.add(mpair); } return set; } public static void main(String[] args) { SimpleHashMap<String,String> m = new SimpleHashMap<String,String>(); m.put("a", "b"); System.out.println(m.get("a")); } }
|
相关推荐
本话题主要关注如何利用HashMap这一数据结构来实现词典查询,以提供快速、便捷的字典服务。HashMap是Java编程语言中的一种内置数据结构,它提供了O(1)的平均时间复杂度来执行查找、插入和删除操作,这使得它成为构建...
HashMap 源码实现红黑树添加元素和删除元素 HashMap 中使用红黑树来存储元素,是为了提高查找、插入和删除操作的性能。红黑树是一种自平衡二叉树,可以保持二叉树的平衡,从而获得较高的查找性能。 红黑树的创建...
虽然ArrayList操作相对简单,但其查找效率不如HashMap,因为它是线性搜索,时间复杂度为O(n)。在ASP.NET中,ArrayList可能用于存储一组动态生成的数据,比如从数据库查询的结果。 描述中的链接指向了一篇博客文章,...
在这个简单的QQ聊天程序中,开发者利用了HashMap这一数据结构来存储和管理信息,以实现高效的消息传递和用户交互。 HashMap在Java中是集合框架的一个重要组成部分,它是一种基于哈希表的Map接口实现。HashMap提供了...
HashMap是Java编程语言中一种非常重要的数据结构,它实现了Map接口,允许存储...HashSet作为HashMap的子类,提供了简单的无序集合存储功能。理解HashMap的底层机制和使用注意事项,对于编写高性能的Java代码至关重要。
哈希映射(HashMap)是Java编程语言中一个非常重要的数据结构,它在《简单的key value hashmap》中被提及,通常用于存储键值对(key-value pairs)。HashMap是Java集合框架的一部分,它提供了高效的查找、插入和删除...
以下是一个简单的示例,展示了如何用HashMap实现枚举功能: ```java import java.util.HashMap; import java.util.Map; public class GenericEnum { private static final Map, EnumItem> ENUM_MAP = new HashMap...
在Java中,HashMap的实现方式有多种,本文将介绍使用数组和链表的方式简单实现HashMap的增删改功能。 HashMap的数据结构 HashMap的数据结构主要由三个部分组成:数组、链表和红黑树。数组用于存储键值对,链表用于...
在JDK 7中,HashMap的put过程相对简单,也是通过哈希值定位到桶,如果桶为空则直接插入,否则将新元素添加到链表的末尾。然而,由于HashMap是非线程安全的,如果多个线程同时put可能导致死循环的问题。这是因为当两...
在深入理解HashMap之前,我们先简单回顾一下Java集合的基本概念。 Java集合框架包括Set、List和Map三个主要接口。其中,Map接口不同于Set和List,因为它不存储重复元素,而是通过键来唯一标识每个值。HashMap就是...
下面我们将深入探讨HashMap的实现原理,以及如何通过代码实现一个简单的HashMap存取示例。 **哈希表基础** 哈希表是一种数据结构,通过哈希函数将键(key)映射到数组的索引位置,从而实现快速访问。HashMap的核心...
以下是一个简单的JavaScript HashMap实现示例: ```javascript class HashMap { constructor(size = 53) { this.map = new Array(size); } hash(key) { let hash = 0; for (let i = 0; i ; i++) { hash += ...
这里我们将分析一个简单的自定义HashMap实现,它使用Java数组和链表来完成put和get操作。 首先,我们看到类`MyHashMap`包含一个名为`Entry`的内部类,`Entry`类代表数组中的每个元素,它包含了键(K)和值(V),...
创建HashMap对象非常简单,只需要调用构造函数即可: ```java HashMap, Product> productMap = new HashMap(); ``` 这里的`String`是键的类型,`Product`是值的类型,代表每个产品由一个唯一的标识(如产品ID)作为...
`www.pudn.com.txt`可能是提供资料来源的网站链接,这里主要关注的是`Java集合中HashMap的简单使用.txt`文件,它可能包含了关于如何在实际代码中运用`HashMap`的示例和解释。例如,如何创建`HashMap`,插入键值对,...
在本篇文章中,我们将详细介绍一个名为`hashMap`的工具类,该类被设计用于Adobe Flex应用程序中,旨在提供一种简单且高效的方法来处理键值对数据结构。通过深入分析该类的实现细节,我们能够更好地理解其内部机制,...
在这个"用HashMap写的一个小Demo用来写游戏排名的一种方法"的示例中,我们很可能会看到如何利用HashMap来组织游戏分数并进行排序,以实现一个简单的游戏排名系统。 HashMap的特点在于它的键(key)是唯一的,每个键...
总结,Java 8的HashMap源码实现通过引入红黑树优化了高负载情况下的性能,降低了哈希冲突的影响,而Java 7则相对简单,适合小规模数据存储。在实际应用中,应根据数据量和性能需求选择合适的版本。对于开发者来说,...
### HashMap和ConcurrentHashMap...综上所述,面试时通常会针对HashMap和ConcurrentHashMap的实现原理、它们的差异、以及在并发环境下如何保证数据的一致性和线程安全进行提问。了解这些知识点有助于在面试中脱颖而出。
在本实验中,我们通过使用Java语言中的`HashMap`来模拟一个简单的网上购物车系统。该项目的主要目的是熟悉Java集合框架中的`HashMap`类,并了解如何利用它来存储、管理和检索数据。此外,我们还将学习如何使用`...