最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java集合源碼全面分析

 更新時(shí)間:2016年07月01日 11:52:59   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇Java集合源碼全面分析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Java集合工具包位于Java.util包下,包含了很多常用的數(shù)據(jù)結(jié)構(gòu),如數(shù)組、鏈表、棧、隊(duì)列、集合、哈希表等。學(xué)習(xí)Java集合框架下大致可以分為如下五個(gè)部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具類(lèi)(Arrays、Collections)。

從上圖中可以看出,集合類(lèi)主要分為兩大類(lèi):Collection和Map。

Collection是List、Set等集合高度抽象出來(lái)的接口,它包含了這些集合的基本操作,它主要又分為兩大部分:List和Set。

List接口通常表示一個(gè)列表(數(shù)組、隊(duì)列、鏈表、棧等),其中的元素可以重復(fù),常用實(shí)現(xiàn)類(lèi)為ArrayList和LinkedList,另外還有不常用的Vector。另外,LinkedList還是實(shí)現(xiàn)了Queue接口,因此也可以作為隊(duì)列使用。

Set接口通常表示一個(gè)集合,其中的元素不允許重復(fù)(通過(guò)hashcode和equals函數(shù)保證),常用實(shí)現(xiàn)類(lèi)有HashSet和TreeSet,HashSet是通過(guò)Map中的HashMap實(shí)現(xiàn)的,而TreeSet是通過(guò)Map中的TreeMap實(shí)現(xiàn)的。另外,TreeSet還實(shí)現(xiàn)了SortedSet接口,因此是有序的集合(集合中的元素要實(shí)現(xiàn)Comparable接口,并覆寫(xiě)Compartor函數(shù)才行)。

我們看到,抽象類(lèi)AbstractCollection、AbstractList和AbstractSet分別實(shí)現(xiàn)了Collection、List和Set接口,這就是在Java集合框架中用的很多的適配器設(shè)計(jì)模式,用這些抽象類(lèi)去實(shí)現(xiàn)接口,在抽象類(lèi)中實(shí)現(xiàn)接口中的若干或全部方法,這樣下面的一些類(lèi)只需直接繼承該抽象類(lèi),并實(shí)現(xiàn)自己需要的方法即可,而不用實(shí)現(xiàn)接口中的全部抽象方法。

Map是一個(gè)映射接口,其中的每個(gè)元素都是一個(gè)key-value鍵值對(duì),同樣抽象類(lèi)AbstractMap通過(guò)適配器模式實(shí)現(xiàn)了Map接口中的大部分函數(shù),TreeMap、HashMap、WeakHashMap等實(shí)現(xiàn)類(lèi)都通過(guò)繼承AbstractMap來(lái)實(shí)現(xiàn),另外,不常用的HashTable直接實(shí)現(xiàn)了Map接口,它和Vector都是JDK1.0就引入的集合類(lèi)。

Iterator是遍歷集合的迭代器(不能遍歷Map,只用來(lái)遍歷Collection),Collection的實(shí)現(xiàn)類(lèi)都實(shí)現(xiàn)了iterator()函數(shù),它返回一個(gè)Iterator對(duì)象,用來(lái)遍歷集合,ListIterator則專(zhuān)門(mén)用來(lái)遍歷List。而Enumeration則是JDK1.0時(shí)引入的,作用與Iterator相同,但它的功能比Iterator要少,它只能再Hashtable、Vector和Stack中使用。

Arrays和Collections是用來(lái)操作數(shù)組、集合的兩個(gè)工具類(lèi),例如在ArrayList和Vector中大量調(diào)用了Arrays.Copyof()方法,而Collections中有很多靜態(tài)方法可以返回各集合類(lèi)的synchronized版本,即線程安全的版本,當(dāng)然了,如果要用線程安全的結(jié)合類(lèi),首選Concurrent并發(fā)包下的對(duì)應(yīng)的集合類(lèi)。

以上這篇Java集合源碼全面分析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)一個(gè)達(dá)達(dá)租車(chē)系統(tǒng)的步驟詳解

    Java實(shí)現(xiàn)一個(gè)達(dá)達(dá)租車(chē)系統(tǒng)的步驟詳解

    這篇文章主要給大家介紹了利用Java實(shí)現(xiàn)一個(gè)達(dá)達(dá)租車(chē)系統(tǒng)的步驟,文中給出了詳細(xì)的實(shí)現(xiàn)思路和示例代碼,并在文末給出了完整的源碼供大家學(xué)習(xí)下載,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • SpringBoot使用OpenCV示例總結(jié)

    SpringBoot使用OpenCV示例總結(jié)

    這篇文章主要介紹了SpringBoot使用OpenCV示例總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java ShardingJDBC實(shí)戰(zhàn)演練

    Java ShardingJDBC實(shí)戰(zhàn)演練

    Sharding-JDBC 采用在 JDBC 協(xié)議層擴(kuò)展分庫(kù)分表,是一個(gè)以 jar 形式提供服務(wù)的輕量級(jí)組件,其核心思路是小而美地完成最核心的事情
    2021-11-11
  • 詳解java之redis篇(spring-data-redis整合)

    詳解java之redis篇(spring-data-redis整合)

    本篇文章主要介紹了java之redis篇,主要詳細(xì)的介紹了spring-data-redis整合,有興趣的可以了解一下。
    2017-01-01
  • idea2020.3測(cè)試評(píng)價(jià)及感受

    idea2020.3測(cè)試評(píng)價(jià)及感受

    idea2020.3版本這次變化最大的也就是 UI了完全拋棄了之前一直使用的模板更改成了新的樣式,感興趣的朋友快來(lái)下載體驗(yàn)下吧
    2020-10-10
  • mybatis中映射文件(mapper)中的使用規(guī)則

    mybatis中映射文件(mapper)中的使用規(guī)則

    這篇文章主要介紹了mybatis中映射文件(mapper)中的使用規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java多維數(shù)組和Arrays類(lèi)方法總結(jié)詳解

    Java多維數(shù)組和Arrays類(lèi)方法總結(jié)詳解

    這篇文章主要介紹了Java多維數(shù)組和Arrays類(lèi)方法總結(jié)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中spring boot validation自定義注解使用方式

    Java中spring boot validation自定義注解使用方式

    這篇文章主要介紹了Java中spring boot validation自定義注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例詳解

    Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例詳解

    Java8中的Stream流提供了collectingAndThen方法,用于對(duì)歸納結(jié)果進(jìn)行二次處理,文章通過(guò)User類(lèi)的數(shù)據(jù)填充,演示了如何使用該方法進(jìn)行集合去重、查找最高工資員工、計(jì)算平均工資等操作,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 濫用@PathVariable導(dǎo)致bug原因分析解決

    濫用@PathVariable導(dǎo)致bug原因分析解決

    這篇文章主要為大家介紹了濫用@PathVariable導(dǎo)致bug原因分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評(píng)論

望江县| 尚义县| 岑巩县| 手机| 开封县| 六安市| 河池市| 喀喇沁旗| 始兴县| 唐海县| 富蕴县| 威信县| 南开区| 特克斯县| 乌拉特后旗| 邵阳市| 左权县| 怀化市| 庆城县| 稻城县| 瑞昌市| 闽侯县| 内黄县| 繁昌县| 依兰县| 新巴尔虎右旗| 横峰县| 图片| 潜江市| 桑植县| 泉州市| 肇东市| 揭阳市| 凤山市| 于都县| 绥德县| 宁津县| 苏州市| 岳阳市| 华池县| 桃园市|