黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java培訓(xùn) Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)

Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)

更新時(shí)間:2019-12-19 14:39:37 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2741次

從這篇開(kāi)始參考API文檔,和源碼分析,詳細(xì)的介紹每個(gè)集合類的使用,力求在源碼的角度來(lái)分析,加深理解。

  先看一下java集合類的繼承圖

  圖片詳細(xì)的介紹了各種集合類的繼承關(guān)系。

  Java 的集合主要按兩種接口分類:Collection, Map。下面開(kāi)始第一個(gè)集合類的介紹Collection:

  Collection是一個(gè)接口,它主要的兩個(gè)分支是:List和Set。

  我們細(xì)看一下collection的繼承關(guān)系

Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)

  List和Set都是接口,它們繼承于Collection。List是有序的隊(duì)列,List中可以有重復(fù)的元素;而Set是數(shù)學(xué)概念中的集合,Set中沒(méi)有重復(fù)元素!

  一、Collection的介紹:

  1、集合的特點(diǎn):

  (1)集合中存儲(chǔ)的元素是對(duì)象

  (2)集合的長(zhǎng)度是可變的;

  (3)集合是不可以存儲(chǔ)基本數(shù)據(jù)類型的

  2、集合是用于存儲(chǔ)對(duì)象的容器。而每種容器內(nèi)部都有其獨(dú)特的數(shù)據(jù)結(jié)構(gòu),正因?yàn)椴煌娜萜鲀?nèi)部數(shù)據(jù)結(jié)構(gòu)不同,使其各自有自己獨(dú)特的使用場(chǎng)景。雖然每個(gè)容器有其獨(dú)特的結(jié)構(gòu)但是類似的容器還是存在共性的(至少對(duì)容器內(nèi)部對(duì)象的操作方法上是存在共性的),所以這些共性方法能被不斷抽取,最終形成了集合框架體系。

  3、與數(shù)組的區(qū)別:

  數(shù)組集合長(zhǎng)度固定可變存儲(chǔ)元素基本類型/引用類型引用類型元素類型的一致性必須一致可以不一致

  4、從繼承關(guān)系和源碼分析:

  從上圖可以看到Collection位于集合層次結(jié)構(gòu)中的根節(jié)點(diǎn)。他繼承了Iterator的接口。在java1.8的版本中包含了18個(gè)方法:

  public interface Listextends Collection{}

  方法介紹

  add(E e):返回值是boolean,添加一個(gè)元素

  addAll( Collection c ):返回值是boolean類型,將集合C中的所有元素添加到此集合。

  clear():返回值是void,刪除此集合中的所有元素

  contains( Object o):如果包含元素O則返回為true

  containsAll( Collection c):如果包含集合C返回為true

  equals( Object o):將指定的對(duì)象與此集合進(jìn)行比較已獲得相等性

  hashCode():返回類型是int,返回此集合的哈希碼值

  isEmpty():如果集合為空則返回true

  itreator():返回此集合元素的迭代器。

  remove(Object o):返回類型是boolean,刪除指定的元素

  removeIf(Predicte filter):刪除滿足條件的所有元素

  removeAll(Collection c):返回類型是boolean,刪除包含集合c的所有元素。

  size():返回類型是int,返回此集合的元素?cái)?shù)量

  toArray():返回類型是Object[] ,將此集合轉(zhuǎn)化為數(shù)組

  stream():返回類型是Stream,返回以此集合作為源的順序流

  spliterator():創(chuàng)建一個(gè)Spliterator在這個(gè)集合中。

  注意:Spliterator(splitable iterator可分割迭代器)接口是Java為了并行遍歷數(shù)據(jù)源中的元素而設(shè)計(jì)的迭代器,這個(gè)可以類比最早Java提供的順序遍歷迭代器Iterator,但一個(gè)是順序遍歷,一個(gè)是并行遍歷。他是從java1.8的版本中開(kāi)始加進(jìn)去的。

  5、 Collection的遍歷:

  上面給出了Collection的源碼。也給出了API文檔中描述的方法。接下來(lái)就是常見(jiàn)的一些遍歷方式。

      Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)

  二、List介紹

  List是一個(gè)繼承于Collection的接口,即List是集合中的一種。List是有序的隊(duì)列,List中的每一個(gè)元素都有一個(gè)索引;第一個(gè)元素的索引值是0,往后的元素的索引值依次+1。和Set不同,List中允許有重復(fù)的元素。

  public interface Listextends Collection{}

  當(dāng)然既然List是通過(guò)collection來(lái)的,所以我們這里只看一下List新增的內(nèi)容

      Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)

  三、Set介紹

  Set是一個(gè)繼承于Collection的接口,即Set也是集合中的一種。Set是沒(méi)有重復(fù)元素的集合。

  public interface Setextends Collection{}

  新增的內(nèi)容都是collection中的內(nèi)容。這里直接看collection就可以了。

  四、總結(jié)

  從collection的繼承關(guān)系圖,我們可以看到其子類和接口的繼承關(guān)系。

  比如AbstractCollection(它實(shí)現(xiàn)了Collection中除iterator()和size()之外的函數(shù)。)

  public abstract class AbstractCollectionimplements Collection{}

  AbstractList(它實(shí)現(xiàn)了List中除size()、get(int location)之外的函數(shù)。)

  public abstract class AbstractListextends AbstractCollectionimplements List{}

  AbstractSet(它實(shí)現(xiàn)了List中除iterator()和size()之外的函數(shù))

  public abstract class AbstractSetextends AbstractCollectionimplements Set{}

  Iterator(遍歷集合中的元素)

  public interface Iterator{}

  Iterator遍歷Collection時(shí),是fail-fast機(jī)制的。即,當(dāng)某一個(gè)線程A通過(guò)iterator去遍歷某集合的過(guò)程中,若該集合的內(nèi)容被其他線程所改變

了;那么線程A訪問(wèn)集合時(shí),就會(huì)拋出ConcurrentModificationException異常,產(chǎn)生fail-fast事件。

  ListIterator(相比于Iterator,它新增了添加、是否存在上一個(gè)元素、獲取上一個(gè)元素等等API接口)

  public interface ListIteratorextends Iterator{}

Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)

      以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java培訓(xùn)教程:Java集合框架源碼學(xué)習(xí)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

       相關(guān)文章

  零基礎(chǔ)怎么自學(xué)Java,完整版Java學(xué)習(xí)路線圖

  你還在糾結(jié)學(xué)Java,是自學(xué)還是去培訓(xùn)班嗎

  一個(gè)標(biāo)準(zhǔn)的Java程序員如何進(jìn)階?

  Java學(xué)習(xí)路線清單,快速進(jìn)階Java

  Java編程初學(xué)者要如何進(jìn)階

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产在线拍揄自揄视精品不卡 | 成人国产激情福利久久精品 | 亚洲精品tv久久久久久久久 | 国产视频中文字幕 | 天天爽天天 | 亚洲一区二区三区在线网站 | 老司机日日摸夜夜摸精品影院 | 欧美大交乱xxxxxbbb | 色天天天综合色天天碰 | 色天天综合久久久久综合片 | 久久亚洲成人 | 最新国产午夜精品视频不卡 | 黄色网页在线观看 | 国产三级a三级三级 | 免费看黄片毛片 | 男女毛片视频 | 国内一级野外a一级毛片 | 一区免费视频 | 日本草草视频在线观看 | 国产精品视频白浆免费视频 | 免费看91视频 | 成人看片免费 | 99在线热播精品免费 | 一级特黄特黄的大片免费 | 最近的中文字幕在线看 | 日韩精品一区二区三区不卡 | 大黄毛片| 亚洲大片在线观看 | 又黄又爽又猛大片录像 | 最近最新中文字幕免费大全3 | 色站视频 | 亚洲欧美日韩国产专区一区 | 涩涩网站在线观看 | 成人免费在线观看视频 | 黄色短视屏 | 五月天婷婷一区二区三区久久 | 欧美成人777| 狠狠色狠狠色综合久久第一次 | 亚洲激情网址 | 欧美18性欧美丶黑吊 | 日韩伦理网站 |