hashtablemap-linear.html

来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 55 行

HTML
55
字号
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre>  <font color = #ff0080>/** Returns the number of entries in the hash table. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>int</font> <font color=#0000ff>size</font>() { <font color=#8000a0><font color=#ff8000>return</font> </font>n; }  <font color = #ff0080>/** Returns whether or not the table is empty. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isEmpty</font>() { <font color=#ff8000>return</font><font color=#0000ff> </font>(n == 0); }  <font color = #ff0080>/** Returns an iterable object containing all of the keys. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>Iterable&lt;K&gt; <font color=#0000ff>keys</font>() {    PositionList&lt;K&gt; keys = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList&lt;K&gt;<font color=#0000ff></font>();    <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i=0; i&lt;capacity; i++)       <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff></font>(bucket[i] != null) &&<font color=#0000ff> </font>(bucket[i] != AVAILABLE)) 	keys.<font color=#0000ff>addLast</font>(bucket[i].<font color=#0000ff>getKey</font>());    <font color=#8000a0><font color=#ff8000>return</font> </font>keys;  }  <font color=#ff0080>/** Helper search method - returns index of found key or -(a + 1),   * where a is the index of the first empty or available slot found. */</font>  <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> <font color=#0000ff>findEntry</font>(K key) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidKeyException {    <font color=#8000a0><font color=#8000a0>int</font> </font>avail = -1;    <font color=#0000ff>checkKey</font>(key);    <font color=#8000a0><font color=#8000a0>int</font> </font>i = <font color=#0000ff>hashValue</font>(key);    <font color=#8000a0><font color=#8000a0>int</font> </font>j = i;    <font color=#ff8000>do</font> {      Entry&lt;K,V&gt; e = bucket[i];      <font color=#ff8000>if</font><font color=#0000ff> </font>( e == null) {	<font color=#ff8000>if</font><font color=#0000ff> </font>(avail &lt; 0)	  avail = i;	<font color=#ff0080>// key is not in table</font>	<font color=#ff8000>break</font>;      }      <font color=#ff8000>if</font><font color=#0000ff> </font>(key.<font color=#0000ff>equals</font>(e.<font color=#0000ff>getKey</font>())) <font color=#ff0080>// we have found our key</font>	<font color=#8000a0><font color=#ff8000>return</font> </font>i;	<font color=#ff0080>// key found</font>      <font color=#ff8000>if</font><font color=#0000ff> </font>(e == AVAILABLE) {	<font color=#ff0080>// bucket is deactivated</font>	<font color=#ff8000>if</font><font color=#0000ff> </font>(avail &lt; 0)	  avail = i;	<font color=#ff0080>// remember that this slot is available</font>      }      i =<font color=#0000ff> </font>(i + 1) % capacity;	<font color=#ff0080>// keep looking</font>    } <font color=#ff8000>while</font><font color=#0000ff> </font>(i != j);    <font color=#ff8000>return</font> -<font color=#0000ff></font>(avail + 1);  <font color=#ff0080>// first empty or available slot</font>  }  <font color = #ff0080>/** Returns the value associated with a key. */</font>  <font color=#8000a0><font color=#8000a0>public</font> </font>V <font color=#0000ff>get </font>(K key) <font color=#8000a0><font color=#ff8000>throws</font> </font>InvalidKeyException {    <font color=#8000a0><font color=#8000a0>int</font> </font>i = <font color=#0000ff>findEntry</font>(key);  <font color=#ff0080>// helper method for finding a key</font>    <font color=#ff8000>if</font><font color=#0000ff> </font>(i &lt; 0) <font color=#8000a0><font color=#ff8000>return</font> </font>null;  <font color=#ff0080>// there is no value for this key</font>    <font color=#8000a0><font color=#ff8000>return</font> </font>bucket[i].<font color=#0000ff>getValue</font>();     <font color=#ff0080>// return the found value in this case</font>  }</dl></body></html>

⌨️ 快捷键说明

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