欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java.util.Collection源碼的示例分析

這篇文章主要為大家展示了“java.util.Collection源碼的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“java.util.Collection源碼的示例分析”這篇文章吧。

成都創(chuàng)新互聯(lián)公司憑借專業(yè)的設計團隊扎實的技術支持、優(yōu)質高效的服務意識和豐厚的資源優(yōu)勢,提供專業(yè)的網站策劃、成都網站建設、做網站、網站優(yōu)化、軟件開發(fā)、網站改版等服務,在成都十載的網站建設設計經驗,為成都上千家中小型企業(yè)策劃設計了網站。

明確一下幾點:

  • Collection是接口,其繼承了Iterable接口

  • Collection屬于單值類型集合,重點子接口List接口和Set接口

java.util.Collection源碼的示例分析    

Java.util.List接口(有序、不唯一)

   ArraryList

java.util.Collection源碼的示例分析       

ArrayList 是一個數組隊列,相當于 動態(tài)數組。與Java中的數組相比,它的容量能動態(tài)增長。它繼承于AbstractList,實現(xiàn)了List, RandomAccess, Cloneable, java.io.Serializable這些接口。ArrayList是非同步的,效率高但是線程不安全,Collections.sychromiziedList(new ArraryList<>());可以讓那個ArrayList變成線程安全類

  • ArrayList是基于動態(tài)數組實現(xiàn)的,在增刪時候,需要數組的拷貝復制。

  • ArrayList的默認初始化容量是10,每次擴容時候增加原先容量的一半,也就是變?yōu)樵瓉淼?.5倍

  • 刪除元素時不會減少容量,若希望減少容量則調用trimToSize()

  • 它不是線程安全的。它能存放null值。

   LinkedList

java.util.Collection源碼的示例分析

LinkedList是一個雙向循環(huán)列表隊列

  • LinkedList 是一個繼承于AbstractSequentialList的雙向鏈表。它也可以被當作堆棧、隊列或雙端隊列進行操作。

  • LinkedList 實現(xiàn) List 接口,能對它進行隊列操作。

  • LinkedList 實現(xiàn) Deque 接口,即能將LinkedList當作雙端隊列使用。

  • LinkedList 實現(xiàn)了Cloneable接口,即覆蓋了函數clone() ,能克隆。

  • LinkedList 實現(xiàn)java.io.Serializable接口,這意味著LinkedList支持序列化,能通過序列化去傳輸。

  • LinkedList 是非同步的。

   Vector

底層是數組,現(xiàn)在已少用,被ArrayList替代,原因有兩個:

  • Vector所有方法都是同步,有性能損失。

  • Vector初始length是10 超過length時 以100%比率增長,相比于ArrayList更多消耗內存。

  • 參考資料:https://www.zhihu.com/question/31948523/answer/113357347

總的來說:查詢多用ArrayList,增刪多用LinkedList。

ArrayList增刪慢不是絕對的(在數量大的情況下,會有例外):

  • 如果增加元素一直是使用add() (增加到末尾)的話,并且不擴容的情況下)

  • 一直刪除末尾的元素也是ArrayList要快【不用復制移動位置】

  • 至于如果刪除的是中間的位置的話,還是ArrayList要快!

但一般來說:增刪多還是用LinkedList,因為上面的情況是極端的~

Java.util.Set接口(無序、唯一)

                                  |——SortedSet接口——TreeSet實現(xiàn)類

               Set接口——|——HashSet實現(xiàn)類               

                                   |——LinkedHashSet實現(xiàn)類

  hashSet

hashSet底層基于hashMap實現(xiàn),如圖

java.util.Collection源碼的示例分析

hashSet中的add()方法,是將對象E放入hashMap中的key的位置,value位置存放的是一個固定的Object,如圖:

java.util.Collection源碼的示例分析

java.util.Collection源碼的示例分析

HashSet是無序唯一的,當元素為自定義對象時,兩者的hashCode不同,被認為是不同的元素從而被允許放入HashSet中,但這不符合實際的生產意義,因此需要讓其判定位相等,就要重寫hashCode() ,然而重寫HashCode() ,會出現(xiàn)重碼的bug,因此需要重寫equals()來解決

添加元素的時候,如果key(也對應的Set集合的元素)相等,那么則修改value值。而在Set集合中,value值僅僅是一個Object對象罷了(該對象對Set本身而言是無用的)。

也就是說:Set集合如果添加的元素相同時,是根本沒有插入的(僅修改了一個無用的value值),從源碼(HashMap)中也看出來,==和equals()方法都有使用,具體過程如下

  • 新元素的hsah是否等于老元素的hash,如果不相等,則元素不同,如果相等,那么進行第二部比較

  • 新元素與老元素用“==”進行比較,如果相等,則為同一元素,若不同則進行第三部比較

  • 新元素和老元素用equals()方法判定是否相等,如果不等則不是同一元素,如果相等那么結果為:兩個元素不是同一個對象,程序想把它們當成同一個對象,因此重寫了equals方法;

  TreeSet

   與HashSet是基于HashMap實現(xiàn)一樣,TreeSet同樣是基于TreeMap實現(xiàn)的。

TreeSet是SortedSet接口的唯一實現(xiàn)類,TreeSet可以確保集合元素處于排序狀態(tài)。TreeSet支持兩種排序方式,自然排序 和定制排序,其中自然排序為默認的排序方式。向  TreeSet中加入的應該是同一個類的對象。

  LinkedHashSet 

   LinkedHashSet是HashSet的一個“擴展版本”,HashSet并不管什么順序,不同的是LinkedHashSet會維護“插入順序”。HashSet內部使用HashMap對象來存儲它的元素,而LinkedHashSet內部使用LinkedHashMap對象來存儲和處理它的元素

以上是“java.util.Collection源碼的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網頁題目:java.util.Collection源碼的示例分析
網頁鏈接:http://aaarwkj.com/article36/gpicpg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站內鏈、微信公眾號、網站制作網站導航、全網營銷推廣、營銷型網站建設

廣告

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

成都做網站
亚洲欧美日韩成人在线| 亚洲福利区一区二区三区| 视频久久这里只有精品| 美女床上激情啪啪网页| 欧美乱与老熟妇视频观看| 欧美日韩激情在线不卡三区| 欧美精品日本一区二区| 91嫩草中文字幕在线| 精品国产精品中文字幕| 九色国产一区二区三区| 黑丝美女大战白丝美女| 日本高清免费黄色录像| 欧美小黄片在线免费看| 亚洲一区二区三区精品乱码| 国产精品果亚洲av无人区一区| 国产原创av剧情在线观看| 成人免费中文字幕电影| 国产免费高清av在线| 精品一区二区在线不卡| 欧美国产精品一区二区免费| 99热国产这里只有精品| 亚洲一区在线观看蜜臀| 久久欧精品欧美日韩精品| 尤物视频在线观看一下| 亚洲老司机深夜福利| 日本女优邻居人妻中文字幕| 人妻少妇系列一区二区| 亚洲精品深夜福利视频| 国产欧美日韩精品一区| 中文乱幕亚洲无套内射| 日日做日夜夜操天天搞| 午夜黄色福利在线观看| 蜜臀人妻久久一区二区三| 亚洲综合色日本日b网| 黄色录像黄色片黄色片| 国产精品一区在线免费看| 蜜桃视频在线视频免费观看| 丁香六月色婷婷亚洲激情| 亚洲激情中文字幕av网| 国产欧美日本一区二区| 中文字幕日韩人妻av|