日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】

發布時間:2024/9/30 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 視頻+資料(工程源碼、筆記)【鏈接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg? ?提取碼:zjxs】
  • Java基礎--學習筆記(零起點打開java世界的大門)--博客匯總表

目? ?錄

01_Set集合概述和特點

3.1、Set集合概述和特點

02_哈希值

3.2、哈希值

03_HashSet集合概述和特點

3.3、HashSet集合概述和特點

04_HashSet集合保證元素唯一性源碼分析

3.4、HashSet集合保證元素唯一性源碼分析

05_常見數據結構之哈希表

3.5、常見數據結構之哈希表

06_HashSet集合存儲學生對象并遍歷

案例:HashSet集合存儲學生對象并遍歷

自動生成hashCode()與equals()方法:快捷鍵 Alt + Insert

07_LinkedHashSet集合概述和特點

3.6、LinkedHashSet集合概述和特點

08_TreeSet集合概述和特點

3.7、TreeSet集合概述和特點

API-TreeSet

API-NavigableSet

API-Comparable 自然排序接口

API-Comparator

09_自然排序Comparable的使用

3.8、自然排序Comparable的使用

10_比較器排序Comparator的使用

3.9、比較器排序Comparator的使用

11_成績排序

案例:成績排序

1、比較器排序Comparator

2、自然排序Comparable

12_不重復的隨機數

案例:不重復的隨機數

13_泛型概述和好處

4.1、泛型概述

14_泛型類

4.2、泛型類

15_泛型方法

4.3、泛型方法

16_泛型接口

4.4、泛型接口

17_類型通配符

4.5、類型通配符

18_可變參數

4.6、可變參數

19_可變參數的使用

4.7、可變參數的使用

1、public static List asList?(T... a)

2、public static List of?(E... elements)

3、public static Set of?(E... elements)


01_Set集合概述和特點

3.1、Set集合概述和特點

Set集合的特點

  • 元素存取無序
  • 不包含重復元素的集合(不能存儲重復元素)
  • 沒有索引,不能使用普通for循環遍歷,只能通過迭代器或增強for循環遍歷

  • public interface Set<E> extends Collection<E>

Set是接口,不能直接實例化 --> 實現類HashSet

Set集合的基本使用:Set集合練習 存儲字符串并遍歷【?HashSet:對集合的迭代順序不作任何保證】

02_哈希值

3.2、哈希值

哈希值簡介

  • 是JDK根據對象的地址或者字符串或者數字算出來的int類型的數值。

如何獲取哈希值(Object類中,有一個方法可以獲取對象的哈希碼

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

哈希值的特點

  • 同一個對象多次調用hashCode()方法返回的哈希值是相同的。
  • 默認情況下,不同對象的哈希值是不同的。而重寫hashCode()方法,可以實現讓不同對象的哈希值相同。

03_HashSet集合概述和特點

3.3、HashSet集合概述和特點

HashSet集合的特點

  • 底層數據結構是哈希表。
  • 對集合的迭代順序不作任何保證,也就是說:不保證存儲和取出的元素順序一致。
  • 沒有帶索引的方法,所以不能使用普通for循環遍歷。
  • 由于是Set集合,所以是不包含重復元素的集合。
  • HashSet集合練習:HashSet集合的基本使用---存儲字符串并遍歷

    04_HashSet集合保證元素唯一性源碼分析

    3.4、HashSet集合保證元素唯一性源碼分析

    HashSet集合添加一個元素的過程(HashSet集合保證元素唯一性的圖解):

    HashSet集合保證元素唯一性的原理

  • 根據對象的哈希值計算存儲位置:如果當前位置沒有元素則直接存入;如果當前位置有元素存在,則進入第二步。
  • 當前元素的元素和已經存在的元素比較哈希值:如果哈希值不同,則將當前元素進行存儲;如果哈希值相同,則進入第三步。
  • 通過equals()方法比較兩個元素的內容:如果內容不相同,則將當前元素進行存儲;如果內容相同,則不存儲當前元素。
  • ?HashSet集合存儲元素:

    • 要保證元素唯一性,需要重寫hashCode()equal()

    05_常見數據結構之哈希表

    3.5、常見數據結構之哈希表

    哈希表

    • JDK8之前,底層采用數組+鏈表實現,可以說是一個元素為鏈表的數組。
    • JDK8以后,在長度比較長的時候,底層實現了優化。

    存儲元素:先比較哈希值,哈希值相同的時候,再比較內容。

    06_HashSet集合存儲學生對象并遍歷

    案例:HashSet集合存儲學生對象并遍歷

    // 重復存儲學生對象!保證元素唯一性:HashSet底層數據結構是哈希表,哈希表依賴于2個方法
    // hashCode()與equals() -> 學生類 重寫 hashCode()與equals()

    自動生成hashCode()與equals()方法:快捷鍵 Alt + Insert

    ? ?

    ? ?

    07_LinkedHashSet集合概述和特點

    3.6、LinkedHashSet集合概述和特點

    LinkedHashSet集合特點

  • 哈希表和鏈表實現的Set接口,具有可預測的迭代次序。
  • 由鏈表保證元素有序,也就是說元素的存儲和取出順序是一致的。
  • 由哈希表保證元素唯一,也就是說沒有重復的元素。
  • LinkedHashSet集合基本使用:LinkedHashSet集合練習——存儲字符串并遍歷

    08_TreeSet集合概述和特點

    3.7、TreeSet集合概述和特點

    TreeSet集合概述and特點

    • 元素有序,這里的順序不是指存儲和取出的順序,而是按照一定的規則進行排序,具體排序方式取決于構造方法。

    ? ? ? TreeSet():根據其元素的自然排序進行排序

    ? ? ? TreeSet(Comparator comparator) :根據指定的比較器進行排序

    • 沒有帶索引的方法,所以不能使用普通for循環遍歷。
    • 由于是Set集合,所以不包含重復元素的集合。

    API-TreeSet

    API-NavigableSet

    API-Comparable 自然排序接口

    API-Comparator

    TreeSet集合基本使用:TreeSet集合練習——存儲整數并遍歷

    09_自然排序Comparable的使用

    3.8、自然排序Comparable的使用

    案例需求

    • 存儲學生對象并遍歷,創建TreeSet集合使用無參構造方法
    • 要求:按照年齡從小到大排序,年齡相同時,按照姓名的字母順序排序。

    實現步驟(結論)

    • 用TreeSet集合存儲自定義對象,無參構造方法使用的是自然排序對元素進行排序的。
    • 自然排序,就是讓元素所屬的類實現Comparable接口,重寫compareTo(T o)方法。
    • 重寫方法時,一定要注意排序規則必須按照要求的主要條件和次要條件來寫。

    類轉換異常:學生類 不能 轉成 自然排序接口。?

    如果要做“自然排序”,需要讓類實現Comparable接口,重寫接口的compareTo()方法。

    字符串本身,可以進行比較排序。

    10_比較器排序Comparator的使用

    3.9、比較器排序Comparator的使用

    案例需求

    • 存儲學生對象并遍歷,創建TreeSet集合使用帶參構造方法。
    • 要求:按照年齡從小到大排序,年齡相同時,按照姓名的字母順序排序。

    實現步驟(結論)

    • 用TreeSet集合存儲自定義對象,帶參構造方法使用的是比較器排序對元素進行排序的。
    • 比較器排序,就是讓集合構造方法接收Comparator的實現類對象,重寫compare(T o1,T o2)方法。
    • 重寫方法時,一定要注意排序規則必須按照要求的主要條件和次要條件來寫。

    第3個構造方法:需要 接口的實現類對象。匿名內部類方式,較為簡單。

    11_成績排序

    案例:成績排序

    1、比較器排序Comparator

    2、自然排序Comparable

    12_不重復的隨機數

    案例:不重復的隨機數

    13_泛型概述和好處

    4.1、泛型概述

    泛型概述

    是JDK5中引入的特性,它提供了編譯時類型安全檢測機制,該機制允許在編譯時檢測到非法的類型。

    它的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。

    一提到參數,最熟悉的就是定義方法時有形參,然后調用此方法時傳遞實參。那么參數化類型怎么理解呢?顧名思義,就是將類型由原來的具體的類型參數化,然后在使用/調用時傳入具體的類型。這種參數類型可以用在類、方法和接口中,分別被稱為泛型類、泛型方法、泛型接口。

    泛型定義格式:

    • <類型>:指定一種類型的格式。這里的類型可以看成是形參。
    • <類型1, 類型2, ...>:指定多種類型的格式,多種類型之間用逗號隔開。這里的類型可以看成是形參。
    • 將來具體調用時候給定的類型可以看成是實參,并且實參的類型只能是引用數據類型。

    泛型的好處

    • 把運行時期的問題提前到了編譯期間。
    • 避免了強制類型轉換。?

    當沒有指定集合中元素類型的時候,默認是Object類型:因為 泛型默認是引用類型,Object可以代表所有的引用類型。

    14_泛型類

    4.2、泛型類

    15_泛型方法

    4.3、泛型方法

    方法名相同,參數列表不同:方法重載!

    方法調用,需要相對應,過于麻煩。--> 使用“泛型類”進行改進,只需要一個方法。

    調用方法,需要明確數據類型,過于麻煩。--> 創建對象的時候,不明確數據類型,在調用方法的時候,明確數據類型。

    泛型方法:接收任意泛型的數據類型。

    16_泛型接口

    4.4、泛型接口

    接口不能直接實例化。

    參照ArrayList類(泛型類):

    17_類型通配符

    4.5、類型通配符

    18_可變參數

    4.6、可變參數

    19_可變參數的使用

    4.7、可變參數的使用

    Arrays工具類中有一個靜態方法:

    • public static <T> List<T> asList?(T... a)【public static List asList(T... a)】:返回由指定數組支持的固定大小的列表
    • 返回的集合不能做增刪操作,可以做修改操作

    ?List接口中有一個靜態方法:

    • public static List of(E... elements)【public static <E> List<E> of?(E... elements)】:返回包含任意數量元素的不可變列表
    • 返回的集合不能做增刪改操作

    Set接口中有一個靜態方法:

    • public static Set of(E... elements)【public static <E> Set<E> of?(E... elements)】:返回一個包含任意數量元素的不可變集合
    • 在給元素的時候,不能給重復的元素
    • 返回的集合不能做增刪操作,沒有修改的方法

    1、public static <T> List<T> asList?(T... a)

    2、public static <E> List<E> of?(E... elements)

    3、public static <E> Set<E> of?(E... elements)

    set無帶索引的方法。

    總結

    以上是生活随笔為你收集整理的Java15-day06【Set、HashSet、LinkedHashSet、TreeSet、Comparable、Comparator、泛型类、可变参数的使用】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 肉感丰满的av演员 | 18性xxxxx性猛交 | 亚洲精品白浆 | 超碰天天操 | 精品人妻伦一区二区三区久久 | 免费观看一级视频 | 中文字幕无码不卡免费视频 | 天堂在线播放 | 日韩电影网址 | 亚洲视频一二三 | 欧美交换配乱吟粗大25p | 超碰在线观看91 | 多啪啪免费视频 | 国产精品久久色 | 婷婷激情小说网 | www.超碰在线.com| 999综合网 | 狠狠夜夜| 蜜桃免费在线视频 | 在线观看国产 | 丰满岳乱妇一区二区 | 国产熟妇乱xxxxx大屁股网 | 亚洲综合免费观看高清完整版在线 | 国产精品视频久久久 | 农民人伦一区二区三区 | 日韩av有码| 严厉高冷老师动漫播放 | 国产精品福利电影 | 69视频在线观看免费 | 亚洲综合天堂 | 国产精品aaa | 男人天堂av网站 | 91麻豆映画传媒 | 亚洲国产精品久久久久爰色欲 | 日韩三级在线免费观看 | 欧美大黄视频 | 精品美女久久久久 | 91自啪| 国产视频一区二区在线播放 | 成人h动漫精品一区二区无码 | 福利在线电影 | 男女猛烈无遮挡免费视频 | 精品福利一区二区三区 | 超碰在线免费观看97 | 久久国产主播 | 成人免费视频国产 | 精品无码一区二区三区爱欲 | 给我免费观看片在线电影的 | 精品一区二区三区免费毛片 | 亚洲婷婷在线观看 | 美女福利视频一区 | 毛片无遮挡 | 8x8ⅹ8成人免费视频观看 | 欧美伦理一区二区三区 | 99热热热 | 欧美视频 | 黄色观看网站 | 国产一区二区av | 国产婷婷色一区二区 | 久久亚洲国产 | 丁香婷婷在线观看 | 亚洲午夜在线视频 | 成人午夜免费福利 | 先锋影音av资源网站 | 自拍偷拍福利 | 亚洲色精品三区二区一区 | 免费无码毛片一区二区app | 日韩国产一区 | 婷婷一区二区三区四区 | 一区二区三区波多野结衣 | 国产精品美女高潮无套 | 潘金莲一级淫片aaaaa武则天 | 欧美成人精品一区二区免费看片 | 日韩欧美亚洲一区 | 99久久久无码国产精品性青椒 | 人人舔人人插 | 欧美日韩在线国产 | 国精品一区 | 国产精品蜜 | 国产精品欧美激情 | 欧美性生交大片免费看app麻豆 | 精品视频一二区 | 91成人福利 | 欧美日韩在线一区二区 | 精品人妻久久久久一区二区三区 | 亚洲婷婷丁香 | 亚欧在线免费观看 | 超碰蜜臀 | 久久久艹 | 亚洲一区二区三区久久 | 懂色av一区二区在线播放 | 日韩欧美一级在线 | 亚洲国产综合视频 | 日本一本高清视频 | 欧美乱码视频 | 91久久国语露脸精品国产高跟 | 人妻丰满熟妇av无码区不卡 | 91激情影院 | 欧美福利网址 |