哈希表=散列值
key : value 键值对
Java中-HashMap
key---》哈希函数---》内存地址
把key/value放在对应的内存地址上
哈希碰撞:两个不同的key通过哈希函数得到相同的内存地址
把碰撞的地址变成链表形式存储
1.访问 不存在
2.搜索 O(1) 这是正常情况下,如果碰撞了O(K) K是碰撞元素的个数
3.插入 O(1) 直接找到地址插入
4.删除 O(1) 直接找到地址
哈希表常用操作
1.创建哈希表
//通过数组创建的哈希表 String[] hashTable = new String[4]; //通过hashmap创建的哈希表 HashMap<Integer,String> map = new HashMap<>();
2.添加元素
//数组创建的哈希表 hashTable[1] = "hanmei"; //hashmap创建的哈希表 map.put(1,"hanmeimei");
3.删除元素
//数组 hashTable[1]=""; //hashmap map.remove(1);
4.修改元素
//数组 hashTable[1]="bishi"; //hashmap map.put(1,"bishi");
5.获取元素
//数组 String temp= hashTable[3]; //hashMap map.get(3);
6.检查key是否存在
//直接返回true或false map.containsKey(3);
7.哈希表长度
map.size();
8.查哈希表是否还有元素
map.isEmpty();
哈希表有一个重要作用,记录某个数的数目
key存数,value存出现的次数
创建哈希表的时候,如果用数组类型创建哈希表的话,需要知道数组的长度,而用语言自带的HashMap创建的话,可以不用限制长度
判断一个数组是否有重复的数,创建一个哈希表,用map.containsKey(key) 判断key是否在整个哈希表中,用遍历取到数组中的每个数,对每个数进行判断,如果存在key值,就可以判重,如果想知道每个数出现了几次,可以先map.get(key)获取数组在每个数(Key)的value值,当containsKey为true的时候,将value+1,相当于数多了一个,用map.put(key,value)方法再对其进行赋值,就可以进行修改