国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - Java Collection集合用法詳解

Java Collection集合用法詳解

2022-02-25 13:30做哈白日夢 Java教程

首先Collection是屬于單列集合的頂層接口,表示為一組對象。其類型為引用數據類型,具體創建對象,通過多態的形式進行,本文將給大家詳細的介紹,需要的朋友可以參考下

1.集合的主要體系及分支

Java Collection集合用法詳解

1.1Collection集合及實現類

1.概述:首先Collection是屬于單列集合的頂層接口,表示為一組對象。其類型為引用數據類型,具體創建對象,通過多態的形式進行。
2.主要常用方法(E這種是指泛型類型,可以為任何引用類型):

Java Collection集合用法詳解

3.Collection集合的遍歷(Iterator迭代器,集合的專用遍歷方式)
概述:

Java Collection集合用法詳解

 

2.List集合(List是帶有索引的. 所以多注意索引越界等問題)

1.概述:有序集合,且允許有重復的元素,使用者可以精確的控制每個元素的插入位置,并且可以快速訪問。
特點:有序(存儲與取出順序一致),且元素可以重復。

2.常用方法:

Java Collection集合用法詳解

3.List的列表迭代器(Listlterator)

用法:可以按照任意方向進行遍歷,并在迭代期間修改列表,并獲取列表中迭代器的位置,是list集合特有的迭代器。
常用方法:

Java Collection集合用法詳解

當使用倒敘遍歷時,是需要注意先進行一遍正向順序;或者直接通過Collection工具類中的reverse()的方法進行倒敘,再輸出。

4.并發修改異常(ConcurrentModificationException)

主要產生原因:通過內部類的形式,當通過hasNext()這個方法時,遍歷集合中加以判斷并添加時會發生并發異常,是因為list.add()會導致實際的修改集合和預期的修改集合不對等而觸發并發修改異常。
因為:當你使用list的add方法時候,只會添加實際修改集合的值,而預期的修改集合值不會增加,而hasNext()的使用是需要預期和實際進行判斷的。
如何避免這種異常出現?

1.使用列表迭代器的方法進行添加,因為add不會導致實際與預期的不對等。

2.通過for循環進行遍歷。

2.1 List的實現類

1.ArrayList(底層數據結構屬于數組實現,增刪慢,查詢快);
2.LinkedList(底層數據結構屬于雙鏈表,查詢慢,增刪快);
常用方法:

Java Collection集合用法詳解

 

3.Set集合

特點:集合是無序的(存儲與取出順序不一致),且不允許有重復元素,沒有索引值,因此不能使用普通for遍歷。

3.1HashSet(Set的實現類)

1.哈希值

概述:哈希值是JDK通過對象的地址或者字符串或者數字算出來的int類型的值。
特點:同一個對象的哈希值是相同的,且在默認情況下不同對象的哈希值是不同的。

2.數據結構之哈希表

Java Collection集合用法詳解

3.怎么HashSet集合的元素唯一性?(重中之重)

Java Collection集合用法詳解

4.LinkedHashSet集合(HashSet的子類)

Java Collection集合用法詳解

LinkedHashSet集合元素是有序的。

3.2TreeSet集合(Set的實現類)

特點:可以通過自然排序或者特定的比較器(主要用于Comparable接口來進行)來進行排序;
自然排序Comparable:

Java Collection集合用法詳解

String類實現類自然排序Comparable接口,則可以直接調用用來判斷字符串之間的大小,而當一個類的對象之間需要比較時,是需要實現自然排序Comparable接口,重寫其中compareTo的方法。(TreetSet可以通過匿名內部類的方法來進行重寫自然排序方法)。

 

4.集合的高頻面試題

4.1Arraylist 與 LinkedList 異同

1. 是否保證線程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保證線程安全;
2. 底層數據結構: Arraylist 底層使用的是Object數組;LinkedList 底層使用的是雙向循環鏈表數據結構;
3. 插入和刪除是否受元素位置的影響: ① ArrayList 采用數組存儲,所以插入和刪除元素的時間復雜度受元素位置的影響。 比如:執行add(E e)方法的時候, ArrayList 會默認在將指定的元素追加到此列表的末尾,這種情況時間復雜度就是O(1)。但是如果要在指定位置 i 插入和刪除元素的話(add(int index, E element))時間復雜度就為 O(n-i)。因為在進行上述操作的時候集合中第 i 和第 i 個元素之后的(n-i)個元素都要執行向后位/向前移一位的操作。 ② LinkedList 采用鏈表存儲,所以插入,刪除元素時間復雜度不受元素位置的影響,都是近似 O(1)而數組為近似 O(n)。
4. 是否支持快速隨機訪問: LinkedList 不支持高效的隨機元素訪問,而ArrayList 實現了RandmoAccess 接口,所以有隨機訪問功能。快速隨機訪問就是通過元素的序號快速獲取元素對象(對應于get(int index)方法)。
5. 內存空間占用: ArrayList的空 間浪費主要體現在在list列表的結尾會預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗比ArrayList更多的空間(因為要存放直接后繼和直接前驅以及數據)。

4.2ArrayList 與 Vector 區別

Vector類的所有方法都是同步的。可以由兩個線程安全地訪問一個Vector對象、但是一個線程訪問Vector的話代碼要在同步操作上耗費大量的時間。
Arraylist不是同步的,所以在不需要保證線程安全時時建議使用Arraylist。

 

集合框架底層數據結構總結

1.Collection

1. List

Arraylist: Object數組
Vector: Object數組
LinkedList: 雙向循環鏈表

2. Set

HashSet(無序,唯一): 基于 HashMap 實現的,底層采用 HashMap 來保存元素。
LinkedHashSet: LinkedHashSet 繼承與 HashSet,并且其內部是通過 LinkedHashMap 來實現的。有點類似于我們之前說的LinkedHashMap 其內部是基于 Hashmap 實現一樣,不過還是有一點點區別的。
TreeSet(有序,唯一): 紅黑樹(自平衡的排序二叉樹)。

到此這篇關于Java Collection集合用法詳解的文章就介紹到這了,更多相關Java Collection集合內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_46870007/article/details/120859755

延伸 · 閱讀

精彩推薦
1109
主站蜘蛛池模板: 欧美一级全黄 | 日韩午夜激情 | 欧美精品国产精品 | 日韩精品一区二区三区四区 | 国产乱码精品一区二区三区五月婷 | 中文字幕 亚洲一区 | 久久99er6热线精品首页蜜臀 | 国产精品久久久久久久久久东京 | 免费黄色在线观看 | 亚洲a网| 黄色一级大片在线免费看产 | 天天色天天射天天操 | 亚洲综合大片69999 | 欧美老妇交乱视频 | 在线观看91免费视频 | 精品欧美乱码久久久久久1区2区 | 这里只有精品免费 | 91精品国产日韩91久久久久久 | 日韩精品中文字幕在线 | 欧美一区二区三区久久久久久桃花 | 免费看一区二区三区 | 午夜影院免费看 | 国产精品自拍视频 | 国产综合一区二区 | 午夜激情视频在线观看 | 亚洲成av人片一区二区梦乃 | a级三四级黄大片 | 国产精品亚洲综合 | 欧美一区二区三区视频在线 | 亚洲综合二区 | 亚洲黄色片免费看 | 亚洲精品片 | 黄色免费在线观看 | 日韩视频www | 亚洲国产精品自拍视频 | 日本黄色免费播放 | 成人精品鲁一区一区二区 | 国产高清自拍视频 | 久久精品中文视频 | 欧美性福 | 欧美精品一二三 |