9 package javolution.util.internal.map;
17 @SuppressWarnings(
"rawtypes")
20 static final int EMPTINESS_LEVEL = 2;
21 static final int INITIAL_BLOCK_CAPACITY = 2 << EMPTINESS_LEVEL;
22 static final int SHIFT = 10;
38 @SuppressWarnings(
"unchecked")
40 int i = indexOfKey(key, hash);
42 if (entry !=
null)
return entry;
43 entries[i] = newEntry;
47 if ((++count << EMPTINESS_LEVEL) > entries.length) {
48 resize(entries.length << 1);
60 return entries[indexOfKey(key, hash)];
65 int i = indexOfKey(key, hash);
67 if (oldEntry ==
null)
return null;
72 i = (i + 1) & (entries.length - 1);
74 if (entry ==
null)
break;
75 int correctIndex = indexOfKey(entry.
key, entry.
hash);
76 if (correctIndex != i) {
77 entries[correctIndex] = entries[i];
82 if (((--count << (EMPTINESS_LEVEL + 1)) <= entries.length)
83 && (entries.length > INITIAL_BLOCK_CAPACITY)) {
84 resize(entries.length >> 1);
92 int mask = entries.length - 1;
93 int i = (hash >> shift) & mask;
96 if (entry ==
null)
return i;
97 if ((entry.
hash == hash) && key.equals(entry.
key))
return i;
107 int newMask = newEntries.length - 1;
108 for (
int i = 0, n = entries.length; i < n; i++) {
110 if (entry ==
null)
continue;
111 int newIndex = entry.
hash & newMask;
112 while (newEntries[newIndex] !=
null) {
113 newIndex = (newIndex + 1) & newMask;
115 newEntries[newIndex] = entry;
117 entries = newEntries;