HashMap集合
作者:互联网
HashMap集合
- HashMap集合是Map接口的一个实现类,它用于存储键值映射关系,该集合的键和值允许为空,但键不能重复,且集合中的元素是无序的
- HashMap底层是由哈希表结构组成的,就是**“数组+链表”**的结合体,数组是HashMap的主体结构,链表则主要是为了解决哈希值冲突而存在的分支结构
图分析:
水平方向以数组为主体并在竖直方向以链表结构进行结合的就是HashMap中的哈希表结构。水平方向数组的长度称为HashMap集合的容量(capacity),竖直方向每个元素对应的链表结构称为一个桶(bucket),每个桶的位置在集合中都有对应的桶值,用于快速定位集合元素添加,查找时的位置。
存储原理:当向HashMap集合添加元素时,首先会调用键对象k的hash(k)的方法,快速定位并寻址到该元素在集合要存储的位置。在定位到存储元素键对象k的哈希值所对应桶位置后,会出现两种情况:1**.键对象k的hash值所在的桶位置为空,则可以直接向该桶位置插入元素**;2**.键对象k的hash值所在的桶位置为不为空**,则还需要继续通过键对象k的equals(k)方法比较新插入的元素键对象k和已经存在的元素键对象k是否相同,如果键对象k相同,就会对原有元素的值对象v进行替换并返回原来的旧值,否则会在该桶的链表结构头部新增一个节点来插入新元素对象
上代码:
package com.sgl;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
//创建HashMap对象
Map map = new HashMap();//或HashMap<Object, Object> map = new HashMap<>();两种都可
//1.向Map存储键值元素
map.put("1","Jack");
map.put("2","Rose");
map.put("3","Lucy");
map.put("4","Lucy");
map.put("1","Tom");
System.out.println(map);
//2.查看键对象是否存在
System.out.println(map.containsKey("1"));
//3.获取指定键对象映射的值
System.out.println(map.get("1"));
//4.获取集合中的键对象的值对象集合
System.out.println(map.keySet());
System.out.println(map.values());
//5.替换指定键对象映射的值
map.replace("1","Ton2");
System.out.println(map);
//6.删除指定键对象映射的值
map.remove("1");
System.out.println(map);
}
}
运行结果:
{1=Tom, 2=Rose, 3=Lucy, 4=Lucy}
true
Tom
[1, 2, 3, 4]
[Tom, Rose, Lucy, Lucy]
{1=Ton2, 2=Rose, 3=Lucy, 4=Lucy}
{2=Rose, 3=Lucy, 4=Lucy}
标签:map,HashMap,对象,Lucy,println,集合 来源: https://blog.csdn.net/m0_53821599/article/details/119714301