⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hashtablemap-header.html

📁 经典的数据结构源代码(java 实现)
💻 HTML
字号:
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre><font color = #ff0080>/** A hash table with linear probing and the MAD hash function */</font><font color=#ff8000>import</font> java.util.Iterator;<font color=#8000a0>public</font> <font color=#8000a0><font color=#ff8000>class</font> </font>HashTableMap&lt;K,V&gt; <font color=#8000a0><font color=#ff8000>implements</font> </font>Map&lt;K,V&gt; {  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#ff8000>class</font> </font>HashEntry&lt;K,V&gt; <font color=#8000a0><font color=#ff8000>implements</font> </font>Entry&lt;K,V&gt; {    <font color=#8000a0><font color=#8000a0>protected</font> </font>K key;    <font color=#8000a0><font color=#8000a0>protected</font> </font>V value;    <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>HashEntry</font>(K k, <font color=#8000a0>V </font>v) { key = k; value = v; }    <font color=#8000a0><font color=#8000a0>public</font> </font>V <font color=#0000ff>getValue</font>() { <font color=#8000a0><font color=#ff8000>return</font> </font>value; }    <font color=#8000a0><font color=#8000a0>public</font> </font>K <font color=#0000ff>getKey</font>() { <font color=#8000a0><font color=#ff8000>return</font> </font>key; }    <font color=#8000a0><font color=#8000a0>public</font> </font>V <font color=#0000ff>setValue</font>(V val) {      <font color=#8000a0>V </font>oldValue = value;      value = val;      <font color=#8000a0><font color=#ff8000>return</font> </font>oldValue;      }    <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>equals</font>(Object o) {      HashEntry&lt;K,V&gt; ent;      <font color=#ff8000>try</font> { ent =<font color=#0000ff> </font>(HashEntry&lt;K,V&gt;) o; }      <font color=#ff8000>catch</font><font color=#0000ff> </font>(ClassCastException ex) { <font color=#8000a0><font color=#ff8000>return</font> </font>false; }      <font color=#ff8000>return</font><font color=#0000ff> </font>(ent.<font color=#0000ff>getKey</font>() == key) &&<font color=#0000ff> </font>(ent.<font color=#0000ff>getValue</font>() == value);    }  }  <font color=#8000a0><font color=#8000a0>protected</font> </font>Entry&lt;K,V&gt; AVAILABLE = <font color=#8000a0><font color=#ff8000>new</font> </font>HashEntry&lt;K,V&gt;<font color=#0000ff></font>(null, null); <font color=#ff0080>// marker </font>  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> n = 0; 		<font color=#ff0080>// number of entries in the dictionary</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> capacity;	<font color=#ff0080>// capacity of the bucket array</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font>Entry&lt;K,V&gt;[] bucket;<font color=#ff0080>// bucket array</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> scale, shift;   <font color=#ff0080>// the shift and scaling factors</font>  <font color = #ff0080>/** Creates a hash table with initial capacity 1023. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>HashTableMap</font>() { <font color=#ff8000>this</font><font color=#0000ff></font>(1023); }  <font color = #ff0080>/** Creates a hash table with the given capacity. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>HashTableMap</font>(<font color=#8000a0>int</font> cap) {    capacity = cap;    bucket =<font color=#0000ff> </font>(Entry&lt;K,V&gt;[]) <font color=#8000a0><font color=#ff8000>new</font> </font>Entry[capacity]; <font color=#ff0080>// safe cast</font>    java.util.Random rand = <font color=#8000a0><font color=#ff8000>new</font> </font>java.util.<font color=#0000ff>Random</font>();    scale = rand.<font color=#0000ff>nextInt</font>(capacity-1) + 1;    shift = rand.<font color=#0000ff>nextInt</font>(capacity);  }  <font color = #ff0080>/** Determines whether a key is valid. */</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>checkKey</font>(K k) {    <font color=#ff8000>if</font><font color=#0000ff> </font>(k == null) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>InvalidKeyException</font>(<font color=#008000>"Invalid key: null."</font>);  }  <font color = #ff0080>/** Hash function applying MAD method to default hash code. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>int</font> <font color=#0000ff>hashValue</font>(K key) {    <font color=#8000a0><font color=#ff8000>return</font> </font>Math.<font color=#0000ff>abs</font>(key.<font color=#0000ff>hashCode</font>()*scale + shift) % capacity;  }</dl></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -