加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

大数据之什么是Hash表

发布时间:2019-10-03 01:45:30 所属栏目:教程 来源:好程序员
导读:副标题#e# 大数据之什么是Hash表,Hash,一般翻译做散列,也有直接音译为哈希的,它是基于快速存取的角度设计的,也是一种典型的空间换时间的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。 1.散列表(

MyHashMap类

  1. // 哈希表 
  2. public class MyHashMap { 
  3.   
  4.     // 链表数组,数组的每一项都是一个链表 
  5.     private MyLinkedList[] arr; 
  6.     // 数组的大小 
  7.     private int maxSize; 
  8.   
  9.     /** 
  10.      * 空参构造,默认数组大小为10 
  11.      */ 
  12.     public MyHashMap() { 
  13.         maxSize = 10; 
  14.         arr = new MyLinkedList[maxSize]; 
  15.     } 
  16.   
  17.     /** 
  18.      * 带参构造,数组大小自定义 
  19.      * @param maxSize 
  20.      */ 
  21.     public MyHashMap(int maxSize) { 
  22.         this.maxSize = maxSize; 
  23.         arr = new MyLinkedList[maxSize]; 
  24.     } 
  25.   
  26.     /** 
  27.      * 添加数据,key值必须唯一 
  28.      * @param key 
  29.      * @param value 
  30.      */ 
  31.     public void put(int key, String value) { 
  32.   
  33.         int index = getHashIndex(key); 
  34.         if(arr[index] == null) { 
  35.             arr[index] = new MyLinkedList(); 
  36.         } 
  37.         arr[index].add(key, value); 
  38.     } 
  39.   
  40.     /** 
  41.      * 删除数据 
  42.      * @param key 
  43.      * @return 
  44.      */ 
  45.     public boolean delete(int key) { 
  46.   
  47.         int index = getHashIndex(key); 
  48.         if(arr[index] != null) { 
  49.             return arr[index].delete(key); 
  50.         } 
  51.         return false; 
  52.     } 
  53.   
  54.     /** 
  55.      * 根据key获取value 
  56.      * @param key 
  57.      * @return 
  58.      */ 
  59.     public String get(int key) { 
  60.   
  61.         int index = getHashIndex(key); 
  62.         if(arr[index] != null) { 
  63.             return arr[index].get(key); 
  64.         } 
  65.         return null; 
  66.     } 
  67.   
  68.     /** 
  69.      * 获取数组下标 
  70.      * @param key 
  71.      * @return 
  72.      */ 
  73.     private int getHashIndex(Integer key) { 
  74.         return key.hashCode() % maxSize; 
  75.     } 
  76.   
  77.     /** 
  78.      * 遍历数组中所有链表的数据 
  79.      * @return 
  80.      */ 
  81.     public String list() { 
  82.   
  83.         String str = "[ "; 
  84.         for (int i = 0; i < maxSize; i++) { 
  85.             if(arr[i] != null) { 
  86.                 str += arr[i].toString(); 
  87.             } 
  88.         } 
  89.         str = str.substring(0, str.length()-1); 
  90.         str += " ]"; 
  91.         return str; 
  92.     } 
  93.   
  94.     @Override 
  95.     public String toString() { 
  96.         return list(); 
  97.     } 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读