一.哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。
实现方式为数组加链表存储
二.HashMap
HashMap和Hashtable的使用差不多,我这里先讲HashMap吧
1.创建对象
HashMap<Integer,String> hash = new HashMap<>();
如图创建一个HashMap对象,存Integer-String键值对
2.put(Integer key,String value)
传入键值对参数,如果存在键相同的情况,会覆盖原来的值
3.get(Object key)
根据键来获取对应值
4.getOrDefault(Object key, V defaultValue)
获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。
6.keySet()
遍历获取每一个键
7.remove(Object key)
根据键来删除键值对
8.entrySet()
遍历所有键值对
for(Map.Entry<Integer,String> entry: hash.entrySet()){
System.out.println(entry.getKey()+":"+ entry.getValue());
}
9.size()
获取键值对数量
10.containsKey(Integer key)
是否包含key键
三.HashSet
HashSet基于HashMap实现,是一个不允许有重复元素的集合,通常用于去重问题
1.创建对象
HashSet<Integer> hashSet = new HashSet<>();
2.boolean add():
添加元素并返回以后布尔类型的值表示是否添加成功
3.boolean contains()
判断元素是否存在
4.remove()
删除元素
5.遍历
for(int i:hashSet){
System.out.println(i);
}