欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Java集合-Set-創(chuàng)新互聯(lián)

一、Set概述

java.util.Set接口和java.util.List接口一樣,同樣繼承Collection接口,它與Collection接口中的方法基本一致,并沒有對Collection接口進行功能上的擴充,只是比Collection接口更加嚴(yán)格,與List接口不同的是,Set接口中元素?zé)o序,并且都會以某種規(guī)則保證存入的元素不出現(xiàn)重復(fù)。

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)提供從項目策劃、軟件開發(fā),軟件安全維護、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務(wù),主營業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站建設(shè),成都app軟件開發(fā)公司以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。創(chuàng)新互聯(lián)建站深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Set集合有多個子類,比如:java.util.HashSetjava.util.LinkedHashSet

Set特性:

  • 無序
    • 存取沒有順序
  • 無下標(biāo)
    • 沒有下標(biāo),所以沒有帶下標(biāo)的方法,并且也不能使用普通for循環(huán)遍歷
  • 不可以重復(fù)
    • 添加的元素不可以重復(fù)
二、HashSet

java.util.HashSet是Set接口的一個實現(xiàn)類,它所存儲的元素是不可重復(fù)的,并且元素都是無序的(存取順序不一致),java.util.HashSet底層的實現(xiàn)其實是一個java.util.HashMap支持。

HashSet是根據(jù)對象的哈希值來確定元素在集合中的存儲位置,因此具有良好的存取和查找性能,保證元素唯一性的方式依賴于:hashCodeequals方法

1、HashSet集合特點
  • 底層數(shù)據(jù)結(jié)構(gòu)是哈希表
  • 存取無序
  • 不可以存儲重復(fù)元素
  • 沒有下標(biāo),所以沒有帶下標(biāo)的方法,并且也不能使用普通for循環(huán)遍歷
2、入門程序

HashSet集合存儲數(shù)據(jù)

package cn.com.example11;

import java.util.HashSet;

public class HashSetClass {public static void main(String[] args) {HashSethashSet = new HashSet<>();

        hashSet.add("admin");
        hashSet.add("user");
        hashSet.add("guest");
        hashSet.add("root");

        System.out.println(hashSet);


    }

}
3、哈希值 3.1、哈希值概述

哈希值:是JDK根據(jù)對象的地址或者字符串或者數(shù)字計算出來的int類型的數(shù)據(jù)

3.2、如何獲取哈希值

Object 類中的public int hashCode():返回對象的哈希碼值

3.3、哈希值的特點
  • 同一個對象多次調(diào)用hashCode方法返回的哈希碼值是相同的
  • 默認情況下,不同對象的哈希碼值是不同的,而重寫了hashCode方法,可以實現(xiàn)讓不同對象的哈希碼值相同
3.4、哈希表結(jié)構(gòu)

a、JDK1.8以前

底層數(shù)據(jù)結(jié)構(gòu):數(shù)組 + 鏈表

  1. 創(chuàng)建一個默認長度為16的數(shù)組
  2. 根據(jù)元素的哈希碼值與數(shù)組的長度進行運算得出存儲位置
  3. 判斷當(dāng)前位置是否為null,如果為null直接存儲
  4. 如果不為null,說明有數(shù)據(jù),通過equals比較屬性值
  5. 如果一樣,放棄存儲,如果不一樣,存入數(shù)據(jù)
  6. 新元素在老元素上面

b、JDK1.8以后

節(jié)點個數(shù)小于等于8個:

數(shù)組 + 鏈表

節(jié)點個數(shù)大于8個:

數(shù)組 + 紅黑樹

4、HashSet常用方法

和Collection一致

5、HashSet遍歷方式

和Collection一致

三、TreeSet 1、TreeSet特點
  • 不可以存儲重復(fù)元素
  • 沒有索引
  • 可以將元素按照規(guī)則進行排序
    • TreeSet():根據(jù)其元素的自然排序進行排序
    • TreeSet(Comparator comparator):根據(jù)指定的比較器進行排序
  • 底層數(shù)據(jù)結(jié)構(gòu)是二叉樹,并且底層使用了TreeMap
2、入門程序
package cn.com.example11;

import java.util.TreeSet;

public class TreeSetClass {public static void main(String[] args) {TreeSettreeSet = new TreeSet<>();

        treeSet.add("admin");
        treeSet.add("user");
        treeSet.add("guest");
        treeSet.add("root");

        for (String s : treeSet) {System.out.println(s);
        }


    }

}
四、LinkedHashSet

我們知道HashSet保證元素唯一,可是元素存放進去是沒有順序的,那么我們要保證有序,可以使用HashSet的一個子類java.util.LinkedHashSet,它是鏈表和哈希表組合的一個數(shù)據(jù)存儲結(jié)構(gòu)。

LinkedHashSet:元素唯一、有序

LinkedHashSet特點:底層是一個哈希表(數(shù)組+鏈表/紅黑樹) + 鏈表:多出的鏈表用于記錄元素的存儲順序,保證元素有序

package cn.com.example11;

import java.util.LinkedHashSet;

public class LinkedHashSetClass {public static void main(String[] args) {LinkedHashSetlinkedHashSet = new LinkedHashSet<>();

        linkedHashSet.add("admin");
        linkedHashSet.add("user");
        linkedHashSet.add("guest");
        linkedHashSet.add("root");
        linkedHashSet.add("admin");

        System.out.println(linkedHashSet);
    }

}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:Java集合-Set-創(chuàng)新互聯(lián)
本文路徑:http://www.chinadenli.net/article40/gsgho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣搜索引擎優(yōu)化移動網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作定制網(wǎng)站服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營