大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java培訓 Java培訓教程:Java集合框架源碼學習

Java培訓教程:Java集合框架源碼學習

更新時間:2019-12-19 14:39:37 來源:動力節點 瀏覽2916次

從這篇開始參考API文檔,和源碼分析,詳細的介紹每個集合類的使用,力求在源碼的角度來分析,加深理解。

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

  圖片詳細的介紹了各種集合類的繼承關系。

  Java 的集合主要按兩種接口分類:Collection, Map。下面開始第一個集合類的介紹Collection:

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

  我們細看一下collection的繼承關系

Java培訓教程:Java集合框架源碼學習

  List和Set都是接口,它們繼承于Collection。List是有序的隊列,List中可以有重復的元素;而Set是數學概念中的集合,Set中沒有重復元素!

  一、Collection的介紹:

  1、集合的特點:

  (1)集合中存儲的元素是對象

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

  (3)集合是不可以存儲基本數據類型的

  2、集合是用于存儲對象的容器。而每種容器內部都有其獨特的數據結構,正因為不同的容器內部數據結構不同,使其各自有自己獨特的使用場景。雖然每個容器有其獨特的結構但是類似的容器還是存在共性的(至少對容器內部對象的操作方法上是存在共性的),所以這些共性方法能被不斷抽取,最終形成了集合框架體系。

  3、與數組的區別:

  數組集合長度固定可變存儲元素基本類型/引用類型引用類型元素類型的一致性必須一致可以不一致

  4、從繼承關系和源碼分析:

  從上圖可以看到Collection位于集合層次結構中的根節點。他繼承了Iterator的接口。在java1.8的版本中包含了18個方法:

  public interface Listextends Collection{}

  方法介紹

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

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

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

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

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

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

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

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

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

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

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

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

  size():返回類型是int,返回此集合的元素數量

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

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

  spliterator():創建一個Spliterator在這個集合中。

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

  5、 Collection的遍歷:

  上面給出了Collection的源碼。也給出了API文檔中描述的方法。接下來就是常見的一些遍歷方式。

      Java培訓教程:Java集合框架源碼學習

  二、List介紹

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

  public interface Listextends Collection{}

  當然既然List是通過collection來的,所以我們這里只看一下List新增的內容

      Java培訓教程:Java集合框架源碼學習

  三、Set介紹

  Set是一個繼承于Collection的接口,即Set也是集合中的一種。Set是沒有重復元素的集合。

  public interface Setextends Collection{}

  新增的內容都是collection中的內容。這里直接看collection就可以了。

  四、總結

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

  比如AbstractCollection(它實現了Collection中除iterator()和size()之外的函數。)

  public abstract class AbstractCollectionimplements Collection{}

  AbstractList(它實現了List中除size()、get(int location)之外的函數。)

  public abstract class AbstractListextends AbstractCollectionimplements List{}

  AbstractSet(它實現了List中除iterator()和size()之外的函數)

  public abstract class AbstractSetextends AbstractCollectionimplements Set{}

  Iterator(遍歷集合中的元素)

  public interface Iterator{}

  Iterator遍歷Collection時,是fail-fast機制的。即,當某一個線程A通過iterator去遍歷某集合的過程中,若該集合的內容被其他線程所改變

了;那么線程A訪問集合時,就會拋出ConcurrentModificationException異常,產生fail-fast事件。

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

  public interface ListIteratorextends Iterator{}

Java培訓教程:Java集合框架源碼學習

      以上就是動力節點Java培訓機構小編介紹的“Java培訓教程:Java集合框架源碼學習”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

       相關文章

  零基礎怎么自學Java,完整版Java學習路線圖

  你還在糾結學Java,是自學還是去培訓班嗎

  一個標準的Java程序員如何進階?

  Java學習路線清單,快速進階Java

  Java編程初學者要如何進階

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 91在线视频免费观看 | 日日夜夜天天干 | 久久综合九色综合77 | 国产免费一区二区三区 | 日本a在线 | 奇米影视四色中文字幕 | 亚洲毛片视频 | 日本黄色不卡视频 | 免费看一级毛片欧美 | 亚洲女精品一区二区三区 | 亚洲欧美成人永久第一网站 | 国产一级毛片免 | 一区二区三区四区在线视频 | 四虎永久免费在线观看 | 精品国产91久久久久久久a | 亚洲成人在线观看视频 | 国产粉嫩白浆在线观看 | 日韩麻豆国产精品欧美 | 亚洲 欧美 日韩 综合 | 99视频在线精品免费 | 亚洲精品自产拍在线观看 | 国产不卡在线看 | 天天夜干 | 色综合色狠狠天天综合色hd | 亚洲专区第一页 | 亚洲欧洲日韩国产aa色大片 | 波多野结衣一区二区在线 | 亚洲视频综合 | 久久久久久88色愉愉 | 伊色综合久久之综合久久 | 成人欧美精品久久久久影院 | 国产男女猛视频在线观看网站 | 亚洲综合网站久久久 | 国产成人午夜片在线观看 | 中文字幕在线观看国产 | 国产小视频免费在线观看 | 国产亚洲精品久久久久久小说 | 又刺激又黄的一级毛片 | 日韩欧美亚洲国产高清在线 | 欧美精品另类 | 久久免费视频网站 |