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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序员基本功03常见JAVA集合的实现细节

發布時間:2023/12/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员基本功03常见JAVA集合的实现细节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

筆記筆記自己看的

1、Set和Map的關聯之處

Set代表一種集合元素無序、不可重復的集合,Map代表一種由多個鍵值對組成的集合。Map集合的Key之間不能重復且無序,也就是說,把map里的key單列出來是set集合。

2、Hash存儲機制的快速存取原理

系統采用Hash算法決定集合元素的存儲位置,保證快速存取集合元素

3、紅黑樹的快速訪問機制

?紅黑樹是一種自平衡二叉查找樹,樹中每個節點的值,都大于或等于在它左子樹中的所有節點的值,并且小于或等于在它的右樹中所有節點的值,這確保紅黑樹運行時可以快速查找和定位所需點。

4、Map和List的相似性

?map接口提供了get(K key)方法允許map對象根據key取得value;list接口提供了get(int index)方法允許list對象根據元素索引取得value。list相當于所有key都是int類型的map,也可以說map相當于索引是任意類型的map

5、List集合代表線性表

6、LinkedList集合底層的鏈表實現

https://blog.csdn.net/LZJLZJLZJLZJLZJLZJ/article/details/52278461

7、不同集合類對Iterator提供實現類

iterator是一個迭代器接口,專門用于迭代Collection集合,包括set集合和list集合。iterator迭代器接口只有一個scanner實現類。顯然scanner并不能用于迭代set、list集合。

set集合對應的iterator,都是對應map的內部類KeyIterator(EnumSet集合的Iterator是RegularEnumSet的一個內部類)

arraylist和vector的實現基本相同,除了arrayList是線程不安全,Vector是線程安全的,他們的iterator是AbstractList的內部類Itr。

linkedlist集合對應的Iterator是其內部類ListItr

ArrayDeque集合對應的Iterator是ArrayDeque$DeqIterator。

8、 HashMap底層的Hash存儲機制

在存儲時,系統將調用JAVA對象的hashCode()方法,得到其hashCode值,然后根據hashCode值來決定元素的存儲位置。

9、TreeMap底層的紅黑樹存儲機制

每向treemap中放入一個key-value對,系統會將該entry當成一個新節點,添加到已有紅黑樹中,保證key的有序。紅黑樹是一種自平衡二叉查找樹,樹中每個節點的值,都大于或等于它在左子樹中所有節點的值,小于等于右子樹節點的值,這確保紅黑樹運行時快速地查找和定位所需節點。

10、Set實現的底層依然是Map

11、Map的values()方法的返回值

返回值包含map中所有value的集合,但他們并不是list對象

12、arrayList集合底層的數組實現

https://blog.csdn.net/dingji_ping/article/details/51014914

https://blog.csdn.net/u012877472/article/details/50852933

13、ArrayList和LinkedList在不同場景下的性能差異

?list代表一種線性表的數據結構,arraylist則是一種順序存儲的線性表。其底層采用數組來保存每一個元素,linkedlist則是一種鏈式存儲的線性表。其本質是一個雙向表,不僅實現了list接口,還實現了Deque接口,也就是說Linkedlist既可以當成雙向鏈表使用,也可以當隊列使用,還可以當成棧來使用。

arraylist刪減元素性能差,查詢快;linkedlist相反;

14、不同集合在Iterator迭代時產出元素的行為差異

?iterator迭代器只負責各種集合所包含的元素進行迭代,它自己并沒有保留集合元素,因此迭代時,不應該刪除集合元素,否則引發concurrent modificationException異常。對于ArrayList、Vector、LinkedList等List集合來說,當Iterator遍歷他們倒數第二個元素時,使用list集合的remove()方法刪除集合的任意一個元素,不會引發異常,當正在遍歷其他元素時就和引發異常。對于TreeSet、HashSet等Set集合而言,當Iterator遍歷最后一個元素時,不發生異常。?

https://www.jianshu.com/p/ebf037d54661

總結

以上是生活随笔為你收集整理的程序员基本功03常见JAVA集合的实现细节的全部內容,希望文章能夠幫你解決所遇到的問題。

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