Summary of HashMap in Java

The tricky thing is how to decide the key for a hashmap. Especially when you
intend to use self-defined objects as key.

The simple rule is you have to overwrite hashcode() and equals() method.

Rule 1: x.equals(y) return true if x indeed is equal to y by your own
logic;

Rule 2: if x.equals(y) then x.hashcode() == y.hashcode().

Ideally any two different objects have distinct hashcodes. But that‘t not
possible since hashcode is used to generate real array index. Collisison has to
happen. Thus in practice it‘s possible for two different objects to have same
hashcode. Then equals() is used to tell one from the other.

时间: 2024-10-05 06:34:54

Summary of HashMap in Java的相关文章

hashmap in java(转)

第1部分 HashMap介绍HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口.HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的.HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”.容量 是哈希表中桶的数量,初始容量

java.util.HashMap和java.util.HashTable (JDK1.8)【转】

一.java.util.HashMap 1.1 java.util.HashMap 综述 java.util.HashMap继承结构如下图 HashMap是非线程安全的,key和value都支持null HashMap的节点是链表,节点的equals比较的是节点的key和value内容是否相等. 1 static class Node<K,V> implements Map.Entry<K,V> { 2 final int hash; 3 final K key; 4 V valu

Hashmap in java

1. HashMap要点: 1.1 基本数据结构:  采用 数组+链表/平衡二叉查找树 的组合形式,所有键值对都以Entry<K,V>形式存储(每put进一个键值对,就会实例化一个Entry<K, V>). 数组:Entry<K,V>数组,以hash( key.hashCode() ) 为数组索引.即计算键值的hash值,以此为索引存储键值对Entry<K, V>.数组长度总是2的n次方(这与hash有关,后边会讲) 链表:如果hash()方法算出的hash

C++的hashmap和Java的hashmap

C++里面是这样的:typedef std::unordered_map<std::string,std::string> stringmap; std::unordered_map<std::string,double>::const_iterator got = mymap.find (input); std::pair<std::string,double> myshopping ("baking powder",0.3); myrecipe.

Java HashMap的工作原理(转载)

原文地址:http://www.importnew.com/10620.html 面试的时候经常会遇见诸如:"java中的HashMap是怎么工作的","HashMap的get和put内部的工作原理"这样的问题.本文将用一个简单的例子来解释下HashMap内部的工作原理.首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的. 我们来看个非常简单的例子.有一个"国家"(Country)类

java根据HashMap中的值将其元素排序

思路:HashMap或Map本身没有排序功能,若要进行较轻松的排序,可利用ArrayList中的sort方法 例子: import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class MapSorter { public static void main(String[] args)

【Java基础】——HashMap设计原理&amp;实现分析

HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap. 本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入探讨HashMap的内部结构和实现细节,讨论HashMap的性能问题,并且在文中贯穿着一些关于HashMap常见问题的讨论. 读完本文,你会了解到:   1. HashMap的设计思路和内部结构组成 2. HashMap中的一些概念: 什么是阀值?为什么会有阀值?什么是加载因子?它们有什么作用? 3

JAVA集合------Map (HashMap实现)

package java_util_map; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class MapTest01 { public static void main(String[] args) { /*  * Map是一个接口,HashMap是Map的一个实现类  

【Simple Java】HashMap常用方法

当需要对元素进行计数时,HashMap非常有用,如下例子,统计一个字符串中每个字符出现的次数: package simplejava; import java.util.HashMap; import java.util.Map.Entry; public class Q12 { public static void main(String[] args) { HashMap<Integer, Integer> countMap = new HashMap<Integer, Intege