一、什么是Hash?
将哈希值按照关键词映射到存储到存储位置。注意:怎么解决不相同的关键词而映射到相同哈希值?(压缩映射)
-
散列函数:直接定址法,数字分析法,平方取中法,折叠法,随机数法,除留余数法
2.解决冲突:开放地址法(固地址开放插入哈希值),拉链法(先定位桶,再相应的桶中查找),双散列(迭代哈希函数直至找到空白地址),再散列
3.Java实现HashMap算法
步骤: -
HashMap map = new HashMap();
-
//构造map对象
-
map.put(“关键字”, r.nextInt(10));
-
//put关键字键和哈希值
-
Iterator iter = map.entrySet().iterator();
-
//构造entrySet构造器,通过Iterator遍历key-value
-
System.out.println("contains key two : " + map.containsKey(“two”));
-
//containsKey(Object key) :是否包含键key
-
System.out.println("contains value 0 : " + map.containsValue(new Integer(0)));
-
// containsValue(Object value) :是否包含值value
-
map.remove(“three”);// remove(Object key) :
-
//删除键key对应的键值对
-
map.clear();
-
//清空HashMap
-
System.out.println((map.isEmpty() ? “map is empty” : “map is not empty”));
-
// isEmpty() : HashMap是否为空
代码实现:
package hash;
import java.util.Map;
import java.util.Random;
import java.util.Iterator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Collection;
/*
* HashMap算法
*
*
*
*/
class HashMapTest {
public static void main(String[] args) {
testHashMapAPIs();
}
private static void testHashMapAPIs() {
// 初始化随机种子
Random r = new Random();
// 新建HashMa
HashMap map = new HashMap();//构造map对象
// 添加操作
map.put("one", r.nextInt(9));
//put关键字键和哈希值
map.put("one", r.nextInt(9));
map.put("two", r.nextInt(9));
map.put("three", r.nextInt(9));
// 打印出map
System.out.println("map:" + map);
// 通过Iterator遍历key-value
Iterator iter = map.entrySet().iterator();//构造entrySet构造器
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
System.out.println("next : " + entry.getKey() + " - " + entry.getValue());
}
// HashMap的键值对个数
System.out.println("size:" + map.size());
// containsKey(Object key) :是否包含键key
System.out.println("contains key two : " + map.containsKey("two"));
System.out.println("contains key five : " + map.containsKey("five"));
// containsValue(Object value) :是否包含值value
System.out.println("contains value 0 : " + map.containsValue(new Integer(0)));
// remove(Object key) : 删除键key对应的键值对
map.remove("three");
System.out.println("map:" + map);
// clear() : 清空HashMap
map.clear();
// isEmpty() : HashMap是否为空
System.out.println((map.isEmpty() ? "map is empty" : "map is not empty"));
}
}
二、构造
1.布隆过滤器(待续)
2.一致性哈希(待续)
总结(待续)
提示:请亲们多多关注,精彩后续,谢谢哈