MyHashMap类
- // 哈希表
- public class MyHashMap {
-
- // 链表数组,数组的每一项都是一个链表
- private MyLinkedList[] arr;
- // 数组的大小
- private int maxSize;
-
- /**
- * 空参构造,默认数组大小为10
- */
- public MyHashMap() {
- maxSize = 10;
- arr = new MyLinkedList[maxSize];
- }
-
- /**
- * 带参构造,数组大小自定义
- * @param maxSize
- */
- public MyHashMap(int maxSize) {
- this.maxSize = maxSize;
- arr = new MyLinkedList[maxSize];
- }
-
- /**
- * 添加数据,key值必须唯一
- * @param key
- * @param value
- */
- public void put(int key, String value) {
-
- int index = getHashIndex(key);
- if(arr[index] == null) {
- arr[index] = new MyLinkedList();
- }
- arr[index].add(key, value);
- }
-
- /**
- * 删除数据
- * @param key
- * @return
- */
- public boolean delete(int key) {
-
- int index = getHashIndex(key);
- if(arr[index] != null) {
- return arr[index].delete(key);
- }
- return false;
- }
-
- /**
- * 根据key获取value
- * @param key
- * @return
- */
- public String get(int key) {
-
- int index = getHashIndex(key);
- if(arr[index] != null) {
- return arr[index].get(key);
- }
- return null;
- }
-
- /**
- * 获取数组下标
- * @param key
- * @return
- */
- private int getHashIndex(Integer key) {
- return key.hashCode() % maxSize;
- }
-
- /**
- * 遍历数组中所有链表的数据
- * @return
- */
- public String list() {
-
- String str = "[ ";
- for (int i = 0; i < maxSize; i++) {
- if(arr[i] != null) {
- str += arr[i].toString();
- }
- }
- str = str.substring(0, str.length()-1);
- str += " ]";
- return str;
- }
-
- @Override
- public String toString() {
- return list();
- }
- }
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|