发布网友 发布时间:2022-03-29 14:05
共2个回答
懂视网 时间:2022-03-29 18:26
hashmap底层原理是HashMap基于hashing原理,通过put和get方法储存和获取对象。当将键值对传递给put方法时,它调用键对象的hashCode方法来计算hashcode,然后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。HashMap在每个链表节点中储存键值对对象。
HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
热心网友 时间:2022-03-29 15:34
Hashtable是线程安全的,HashMap是非线程安全的。Hashtable是基于老的Diactionary类实现的,HashMap是Java 1.2引进Map接口后的重新实现。Hashtable的方法,进行了锁同步,可以支行于多线程环境。HashMap需要编程人员自在己为其提供同步,才能运行多线程中。常用的方法是:利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象或者是使用ConcurrentHashMap。