亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HashSet的工作原理

發布時間:2020-05-30 11:24:06 來源:億速云 閱讀:291 作者:鴿子 欄目:編程語言

我們先看一下HashSet和TreeSet在整個集合框架中的位置。他們都實現了Set接口。他們之間的區別是HashSet不能保證元素的順序,TreeSet中的元素可以按照某個順序排列。他們的元素都不能重復。

HashSet的工作原理

先來看一下HashSet:

 

public static void main(String[] args) {
    Set<String> set =
new HashSet<String>();
    set.add(
"張三");
    set.add(
"李四");
    set.add(
"王五");
    System.
out.println(set);

System.out.println(set.size());

          System.out.println(set.contains("張三"));
}

打印輸出的順序是是: [李四, 張三, 王五]

可以看出和存進去的順序不一致。

我們先看一下  Set<String> set = new HashSet<String>();

這行代碼創建了一個HashSet,構造函數如下:

public HashSet() {
   
map = new HashMap<>();
}

可以看到實際上是創建了一個HashMap的對象。沒錯,HashSet底層就是一個HashMap.

HashSet的工作原理

再來看一下這行代碼:set.add("張三");

public boolean add(E e) {
   
return map.put(e, PRESENT)==null;
}

非常的簡單,就是調用了一下HashMap的put方法對元素進行插入。

這里的PERSENT是什么呢?繼續順藤摸瓜:

private static final Object PRESENT = new Object();
原來就是一個普通的Object對象前面用static final修飾說明是不可變的。

HashSet的工作原理

繼續添加:set.add("李四");

HashSet的工作原理


可以看出來HashMap的key分別為”張三”,”李四”,“王五”, 因為HashSet用不到value,他們的value都是一樣的指向同一個地方。繼續往下看:System.out.println(set.size());


public int size() {
   
return map.size();
}

也是調用的HashMap的size方法。

System.out.println(set.contains("張三"));

public boolean contains(Object o) {
   
return map.containsKey(o);
}

同樣調用的HashMap的contains方法。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀安县| 新竹县| 望都县| 丹阳市| 长宁县| 德化县| 麟游县| 桂东县| 博野县| 红安县| 宁南县| 吕梁市| 金门县| 射洪县| 庄浪县| 高雄县| 筠连县| 山丹县| 商南县| 凤凰县| 桂阳县| 通榆县| 南充市| 宿州市| 麦盖提县| 马公市| 聂拉木县| 都安| 韶关市| 卫辉市| 旬邑县| 宜昌市| 开鲁县| 大竹县| 东辽县| 沧州市| 枣阳市| 织金县| 杭锦旗| 崇阳县| 大关县|