文章目录
一、HashMap和Hashtable历史叙旧
都知道JAVA中有三大集合List , Set, Map,前两个继承自Collection接口,Map是一个独立的接口,今天主要谈谈Map下的HashMap;Map有三个实现类HashMap、TreeMap和HashTable
Hashtable比HashMap出现的要早,在java一开始发布时就提供的键值映射的数据结构,也就是Key-Value模型;而HashMap产生于JDK1.2,早不代表好,现在主要用的还是HashMap。能被广泛使用还是有它的优势的,比如它查找的时间复杂度是O(1),是不是很牛,下来详细看
二、什么是HashMap
HashMap是一个key-value模型,具有映射关系,内部所用的数据结构是数组+链表/红黑树 ,通过key值可以找到value值,(把皇上当做key,它的那些妃子们就是很多个value,不太恰当,哈哈哈)并允许使用null值和null键,就是key和value的取值都可以为空,但key最多只能允许一个为空,多了的话就会覆盖;Hashtable的key就不允许为空。HashMap不保证映射的顺序,特别是它不保证该顺序恒久不变。
三、HashMa的常用方法
1、put( key,value):就是往里面添加元素,将键映射存放到Map集合中,key不允许重复,要不然会覆盖以前的值
2、get(Object key) :相当于查看,返回指定键所映射的值,没有该key对应的值则返回 null
3、size() :返回Map集合中数据数量,
4、clear() :清空Map集合
5、isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false
6、remove(Object key) :删除Map集合中键为key的数据并返回其所对应value值。
7、values() :返回Map集合中所有value组成的以Collection数据类型格式数据。
8、containsKey(Object key) 判断集合中是否包含指定键,包含返回 true,否则返回false
9、containsValue(Object value) 判断集合中是否包含指定值,包含返回 true,否则返回false
10、keySet() 返回Map集合中所有key组成的Set集合
11、entrySet() 将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合
部分方法示例
import java.util.HashMap;
public class HashMapDemo {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();//定义一个map
map.put("李白", "1");//存放键值对
System.out.println(map.containsKey("李白"));//键中是否包含这个数据,打印结果为true
System.out.println(map.containsKey("王维"));//打印结果为false
System.out.println(map.get("李白"));//通过键拿值,打印结果是1
System.out.println(map.get("王维"));//打印结果为null
System.out.println(map.isEmpty());//判空,打印结果为false
System.out.println(map.size());//输出map的大小,打印结果为1
System.out.println(map.remove("李白"));//从键值中删除.打印结果为1
System.out.println(map.containsKey("李白"));//删除了所以不包含了,输出false
System.out.println(map.isEmpty());//现在就为空是,输出true
map.put("杜甫", "2");
System.out.println(map.get("杜甫"));
map.put("陶渊明", "3");
System.out.println(map.get("陶渊明"));
map.put("杜甫", "4");
map.put("陶渊明", "6");
for (String key : map.keySet()) {
System.out.println(key

本文深入解析了HashMap的起源、工作原理、冲突解决策略、负载因子的概念及其与Hashtable的区别。同时,介绍了HashMap在Java 1.8之后的改进,如数组+链表/红黑树的数据结构优化。
最低0.47元/天 解锁文章
2677

被折叠的 条评论
为什么被折叠?



