1. 考察目标
a. HashMap的底层数据结构;
i. map集合当中,键是唯一的
1. 问题:键是怎么做到唯一性的呢?
a. 学习HashMap中的数据结构;
i. 哈希表结构:数组+链表
ii. 建议:今后键的位置存储的是自定义类型,不要忘记重写hashcode和equals方法
b. 答案:
i. 需要依赖于键类型中的方法 hashcode和equals两个方法的配合使用
ii. 当我们调用添加方法向集合中添加元素的时候,首先会调用hashcode方法计算出一个哈希值,然后拿着哈希值去集合中对比有没有相同
1. 没有,直接存储
2. 有,调用equals方法逐个比较元素中的内容
2. 细节:存取的顺序不能保证;
b. HashMap与HashTable的区别;
i. HashMap
1. 允许存储null键和null值;
2. 不同步(线程不安全),效率高;
ii. HashTable
1. 不能存储null键和null值;
2. 同步(线程安全),效率低; |
|