當前位置:首頁 » 編程語言 » java雙向鏈表

java雙向鏈表

發布時間: 2023-05-25 20:40:47

java 雙向鏈表的迭代器,怎麼添加元素

可以用LinkedList代替你的AdditiveList

LinkedList<String> linklist=new LinkedList<String>();
String [] strs={"1","2","3","4"};
for (String string : strs) {
linklist.add(string);
}
System.out.println("鏈表的第一個元素是 : " + linklist.getFirst());
System.out.println("鏈表最後一個元素是 : " + linklist.getLast());
System.out.println("鏈表的長度 : " + linklist.size());

//然後你需要動態改變鏈表中的元素這時可以用ListIterator<E>迭代器來操作鏈表
ListIterator<String> itr=linklist.listIterator();
while (itr.hasNext()) {
itr.next();//先正序將游標調至結尾
}
while (itr.hasPrevious()) {
String string = (String) itr.previous();//逆序遍歷鏈表
System.out.println(string);
if("2".equals(string)){//在指定位置前插入元素
itr.add("0");//這里就是你需要插入的元素
itr.add("1");
}
}
System.out.println(linklist.toString());

② java 中的LinkedList 是雙向循環列表嗎

源代碼中:
public void addLast(E e) {
addBefore(e, header);
}
將指定元素添加到此列表的結尾
public boolean add(E e) {
addBefore(e, header);
return true;
}
所以,add是向列表尾加的

看了一下addBefore方法
應該是雙鏈表結構 不是循環雙鏈表

③ JAVA中鏈表有什麼用

java中的List介面 中有兩個實現類:ArrayList和LinkedList。前者是使用數組實現,用索引來取數據是它的優勢。後者是用雙向鏈表實現,在插入和刪除操作上占優勢。具體實現已經封裝好了,不用操心過多,具體動作都有具體的方法。

④ 關於ArrayList與LinkedList問題

對於處理一列數據項,Java 提供了兩個類ArrayList 和LinkedList ,ArrayList 的內部實現是基於內部數組Object[] ,從概念上講,它更像數組,但LinkedList 的內部實現是基於一組連接的記錄,所以,它更像一個鏈表結構,它們在性能上有很大的差別。
ArrayList和LinkedList都實現了List介面,ArrayList的實現用的是數組,LinkedList是基於鏈表,ArrayList適合查找,LinkedList適合增刪。

ArrayList與LinkList兩者的區別:

ArrayList是基於索引的數據介面,它的底層是數組。它可以以O(1)時間復雜度對元素進行隨機訪問
相對於ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數組那樣重新計算大小或者是更新索引。
LinkedList比ArrayList更占內存,因為LinkedList為每一個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。

但是要刪除數據卻是開銷很大的,因為這需要重排數組中的所有數據。
2) 相對於 ArrayList , LinkedList 插入是更快的。因為 LinkedList 不像 ArrayList 一樣,不需要改變數組的大小,也不需要在數組裝滿的時候要將所有的數據重新裝入一個新的數組,這是 ArrayList 最壞的一種情況,時間復雜度是 O(n) ,而 LinkedList 中插入或刪除的時間復雜度僅為 O(1) 。 ArrayList 在插入數據時還需要更新索引(除了插入數組的尾部)。
3) 類似於插入數據,刪除數據時, LinkedList 也優於 ArrayList 。
4) LinkedList 需要更多的內存,因為 ArrayList 的每個索引的位置是實際的數據,而 LinkedList 中的每個節點中存儲的是實際的數據和前後節點的位置 ( 一個 LinkedList 實例存儲了兩個值: Node<E> first 和 Node<E> last 分別表示鏈表的其實節點和尾節點,每個 Node 實例存儲了三個值: E item,Node next,Node pre) 。

什麼場景下更適宜使用 LinkedList,而不用ArrayList
1) 你的應用不會隨機訪問數據 。因為如果你需要LinkedList中的第n個元素的時候,你需要從第一個元素順序數到第n個數據,然後讀取數據。
2) 你的應用更多的插入和刪除元素,更少的讀取數據 。因為插入和刪除元素不涉及重排數據,所以它要比ArrayList要快。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:945
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:742
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372