(long key)
| 126 | } |
| 127 | |
| 128 | public boolean remove(long key) { |
| 129 | if (key == 0) { |
| 130 | if (!hasZeroKey) |
| 131 | return false; |
| 132 | hasZeroKey = false; |
| 133 | size--; |
| 134 | return true; |
| 135 | } |
| 136 | long[] kt = keyTable; |
| 137 | int m = kt.length - 1; |
| 138 | int i = hash(key); |
| 139 | for (long k; (k = kt[i]) != key; i = (i + 1) & m) |
| 140 | if (k == 0) |
| 141 | return false; |
| 142 | for (int j = (i + 1) & m; (key = kt[j]) != 0; j = (j + 1) & m) { |
| 143 | int h = hash(key); |
| 144 | if (((j - h) & m) > ((i - h) & m)) { |
| 145 | kt[i] = key; |
| 146 | i = j; |
| 147 | } |
| 148 | } |
| 149 | kt[i] = 0; |
| 150 | size--; |
| 151 | return true; |
| 152 | } |
| 153 | |
| 154 | public void clear() { |
| 155 | if (size == 0) |