真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CoreJava簡單談?wù)凥ashSet(推薦)

同學(xué)們在看這個問題的時候,我先提出者兩個問題,然后大家?guī)е鴨栴}看這個文章會理解的更好。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供豐鎮(zhèn)網(wǎng)站建設(shè)、豐鎮(zhèn)做網(wǎng)站、豐鎮(zhèn)網(wǎng)站設(shè)計、豐鎮(zhèn)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、豐鎮(zhèn)企業(yè)網(wǎng)站模板建站服務(wù),十多年豐鎮(zhèn)做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

1、HashSet為什么添加元素時不能添加重復(fù)元素?

2、HashSet是否添加null元素?

打開源碼, 我們看到如下代碼,我們看到HashSet也有一個HashMap做為屬性,HashSet()的構(gòu)造方法就是將這個map實例化。如果大家對HashMap還不了解話,可以看我的這篇博文。還要注意有一個靜態(tài)final的對象PRESENT,這個是干什么用的,咱們繼續(xù)往下看。

private transient HashMap map;

 // Dummy value to associate with an Object in the backing Map
 private static final Object PRESENT = new Object();

 /**
  * Constructs a new, empty set; the backing HashMap instance has
  * default initial capacity (16) and load factor (0.75).
  */
 public HashSet() {
  map = new HashMap<>();
 }

然后我們再打開其add方法,其就是將元素e放到HashMap中,然后將靜態(tài)final對象PRESENT作為value放到里邊,如果添加成功,那么HashMap返回null,然后也就是添加成功了,上一篇博文也講到了,咱們再講一次作為復(fù)習(xí)。如果將element放到HashMap里邊,首先判斷其hashCode,如果hashCode沒有找到,就根據(jù)hashCode計算index放到對應(yīng)的bucket中,如果hashCode相同的話,那么再根據(jù)key的是否equals作為第二判斷,放到相應(yīng)的linked list里邊了。

/**
  * Adds the specified element to this set if it is not already present.
  * More formally, adds the specified element e to this set if
  * this set contains no element e2 such that
  * (e==null ? e2==null : e.equals(e2)).
  * If this set already contains the element, the call leaves the set
  * unchanged and returns false.
  *
  * @param e element to be added to this set
  * @return true if this set did not already contain the specified
  * element
  */
 public boolean add(E e) {
  return map.put(e, PRESENT)==null;

當然第二個問題同學(xué)們是否也想到了,因為hashMap是支持key為null的,所以HashSet也是可以添加key為null的元素的。HashMap用的地方這么多,大家知道它很重要了吧?!

以上這篇Core Java 簡單談?wù)凥ashSet(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)頁標題:CoreJava簡單談?wù)凥ashSet(推薦)
文章鏈接:http://weahome.cn/article/jiddhc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部