摘要:類繼承樹由繼承樹看出,三者都是的間接實現類。實現接口,繼承于,實現與接口。頻繁的插入刪除操作頻繁的隨機訪問操作未知的初始數據量
???????這段時間把瘋狂JAVA再看了一遍,發現Stack,ArrayDeque,LinkedList都可以作為棧使用,所以就稍微從性能以及實現的細節對比這三者的區別。
類繼承樹
???????由繼承樹看出,三者都是Collection的間接實現類。
???????ArrayDeque實現Deque接口,Stack繼承于Vector,LinkedList實現Deque與List接口。
? | 存儲方式 |
---|---|
Stack | 長度為10的數組 |
ArrayDeque | 長度為16的數組 |
LinkedList | 鏈表 |
Stack | ArrayDeque | LinkedList |
---|---|---|
push(e) | addFirst(e)/offerFirst(e) | addFirst(e)/offerFirst(e) |
pop() | removeFirst()/pollFirst() | removeFirst()/pollFirst() |
peek() | getFirst()/peekFirst() | getFirst()/peekFirst() |
? | 線程安全 |
---|---|
Stack | 線程同步 |
ArrayDeque | 線程不同步 |
LinkedList | 線程不同步 |
?????通常情況下,不推薦使用Vector以及其子類Stack
1.需要線程同步????使用Collections工具類中synchronizedXxx()將線程不同步的ArrayDeque以及LinkedList轉換成線程同步。
2.頻繁的插入、刪除操作:LinkedList 3.頻繁的隨機訪問操作:ArrayDeque 4.未知的初始數據量:LinkedList文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74410.html
摘要:會死循環,因為棧內不會彈出所以判斷會一直執行。集合用于模擬隊列這種數據結構,隊列通常是指先進先出的容器。集合不僅提供了的功能,還提供了雙端隊列,棧的功能。如果有多個線程需要訪問集合中的元素,需要考慮使用將幾個包裝成線程安全集合。 List判斷兩個對象相等只通過equals方法比較返回true即可。 public class A { @Override public ...
摘要:除此之外,還有一個接口,代表一個雙端隊列,雙端隊列可以同時從兩端刪除添加元素,因此的實現類既可當成隊列使用,也可當成棧使用。相當于棧方法將一個元素進該雙端隊列所表示的棧的棧頂。 Queue用于模擬隊列這種數據結構,隊列通常是指先進先出(FIFO)的容器。隊列的頭部保存在隊列中存放時間最長的元素,隊列的尾部保存在隊列中存放時間最短的元素。新元素插入(offer)到隊列的尾部,訪問元素(p...
摘要:最小初始化容量。它作為堆棧隊列雙端隊列的操作和的操作是一致的,只是內部的實現不同。根據元素內容查找和刪除的效率比較低,為。但是接口有對應的并發實現類類。 Queue接口的實現類 Queue接口作為隊列數據結構,java在實現的時候,直接定義了Deque接口(雙端隊列)來繼承Queue接口,并且只實現Deque接口。這樣java中的雙端隊列就囊括了隊列、雙端隊列、堆棧(Deque接口又定...
摘要:棧隊列雙端隊列都是非常經典的數據結構。結合了棧和隊列的特點。因此,在中,有棧的使用需求時,使用代替。迭代器之前源碼源碼之與字段中分析過,容器的實現中,所有修改過容器結構的操作都需要修改字段。 棧、隊列、雙端隊列都是非常經典的數據結構。和鏈表、數組不同,這三種數據結構的抽象層次更高。它只描述了數據結構有哪些行為,而并不關心數據結構內部用何種思路、方式去組織。本篇博文重點關注這三種數據結構...
閱讀 2397·2021-10-09 09:44
閱讀 2132·2021-10-08 10:05
閱讀 3424·2021-07-26 23:38
閱讀 2991·2019-08-28 18:16
閱讀 812·2019-08-26 11:55
閱讀 1821·2019-08-23 18:29
閱讀 2035·2019-08-23 18:05
閱讀 1364·2019-08-23 17:02