Java???????????????HashSet ?? HashMap
?????CarpenterLee ???????[ 2016/5/27 10:40:08 ] ??????????????????? Java
????remove()
????remove(Object key)???????????key??????entry???÷???????????????removeEntryForKey(Object key)???????removeEntryForKey()?????????????key??????entry??????????entry??????????????????????????getEntry()?????????
//removeEntryForKey()
final Entry<K??V> removeEntryForKey(Object key) {
......
int hash = (key == null) ? 0 : hash(key);
int i = indexFor(hash?? table.length);//hash&(table.length-1)
Entry<K??V> prev = table[i];//??????????
Entry<K??V> e = prev;
while (e != null) {//???????????
Entry<K??V> next = e.next;
Object k;
if (e.hash == hash &&
((k = e.key) == key || (key != null && key.equals(k)))) {//?????????entry
modCount++; size--;
if (prev == e) table[i] = next;//??????????????????entry
else prev.next = next;
return e;
}
prev = e; e = next;
}
return e;
}
????HashSet
?????????????HashSet???HashMap??????????HashSet?????????????????????HashMap?????????HashSet?????????????в???300?д??????????????
//HashSet???HashMap??????
public class HashSet<E>
{
......
private transient HashMap<E??Object> map;//HashSet?????????HashMap
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
public HashSet() {
map = new HashMap<>();
}
......
public boolean add(E e) {//??????????
return map.put(e?? PRESENT)==null;
}
......
}
??????
![](/images/ad-banner/ad-banner.png)
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11