導航:首頁 > 編程語言 > javalistlinklist

javalistlinklist

發布時間:2025-06-21 20:58:19

java語言中用LinkList實現堆棧

棧和隊列是兩種特殊的線性表,它們的邏輯結構和線性表相同,只是其運算規則較線性表有更多的限制,故又稱它們為運算受限的線性表。

LinkedList數據結構是一種雙向的鏈式結構,每一個對象除了數據本身外,還有兩個引用,分別指向前一個元素和後一個元素,和數組的順序存儲結構(如:ArrayList)相比,插入和刪除比較方便,但速度會慢一些。

棧的定義

棧(Stack)是限制僅在表的一端進行插入和刪除運算的線性表。

(1)通常稱插入、刪除的這一端為棧頂(Top),另一端稱為棧底(Bottom)。

(2)當表中沒有元素時稱為空棧。

(3)棧為後進先出(Last In First Out)的線性表,簡稱為LIFO表。

棧的修改是按後進先出的原則進行。每次刪除(退棧)的總是當前棧中"最新"的元素,即最後插入(進棧)的元素,而最先插入的是被放在棧的底部,要到最後才能刪除。

實現代碼

package com.weisou.dataStruct;

import java.util.LinkedList;

@SuppressWarnings("unchecked")

public class MyStack {

LinkedList linkList = new LinkedList<Object>();

public void push(Object object) {

linkList.addFirst(object);

}

public boolean isEmpty() {

return linkList.isEmpty();

}

public void clear() {

linkList.clear();

}

// 移除並返回此列表的第一個元素

public Object pop() {

if (!linkList.isEmpty())

return linkList.removeFirst();

return "棧內無元素";

}

public int getSize() {

return linkList.size();

}

public static void main(String[] args) {

MyStack myStack = new MyStack();

myStack.push(2);

myStack.push(3);

myStack.push(4);

System.out.println(myStack.pop());

System.out.println(myStack.pop());

}

}

隊列定義

隊列(Queue)是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表

(1)允許刪除的一端稱為隊頭(Front)。

(2)允許插入的一端稱為隊尾(Rear)。

(3)當隊列中沒有元素時稱為空隊列。

(4)隊列亦稱作先進先出(First In First Out)的線性表,簡稱為FIFO表。

實現代碼:

package com.weisou.dataStruct;

import java.util.LinkedList;

/**

*

* @author gf

* @date 2009-11-13

*/

public class MyQueue {

LinkedList linkedList = new LinkedList();

//隊尾插

public void put(Object o){

linkedList.addLast(o);

//隊頭取 取完並刪除

public Object get(){

if(!linkedList.isEmpty())

return linkedList.removeFirst();

else

return "";

}

public boolean isEmpty(){

return linkedList.isEmpty();

}

public int size(){

return linkedList.size();

}

public void clear(){

linkedList.clear();

}

/**

* @param args

*/

public static void main(String[] args) {

MyQueue myQueue= new MyQueue();

myQueue.put(1);

myQueue.put(2);

myQueue.put(3);

System.out.println(myQueue.get());

}

}

㈡ java中常用的集合介面有哪些

集合主要有Collection和Map介面。
List特點:元素有放入順序,元素可重復
Map特點:元素按鍵值對存儲,無放入順序
Set特點:元素無放入順序,元素不可重復(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的)
List介面有三個實現類:LinkedList,ArrayList,Vector
LinkedList:底層基於鏈表實現,鏈表內存是散亂的,每一個元素存儲本身內存地址的同時還存儲下一個元素的地址。鏈表增刪快,查找慢
ArrayList和Vector的區別:ArrayList是非線程安全的,效率高;Vector是基於線程安全的,效率低
Set介面有兩個實現類:HashSet(底層由HashMap實現),LinkedHashSet
SortedSet介面有一個實現類:TreeSet(底層由平衡二叉樹實現)
Query介面有一個實現類:LinkList
Map介面有三個實現類:HashMap,HashTable,LinkeHashMap
HashMap非線程安全,高效,支持null;HashTable線程安全,低效,不支持null
SortedMap有一個實現類:TreeMap
其實最主要的是,list是用來處理序列的,而set是用來處理集的。Map是知道的,存儲的是鍵值對
set 一般無序不重復.map kv 結構 list 有序 。

㈢ java中ArrayList和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要快。

閱讀全文

與javalistlinklist相關的資料

熱點內容
拉取游戲配置文件失敗 瀏覽:982
編程中回顯是什麼意思 瀏覽:350
word中怎麼插入鏈接文件 瀏覽:580
meta文件可以刪除嗎 瀏覽:386
如何在電腦上加包測試網路 瀏覽:705
jsp微信開發 瀏覽:419
word關閉特別慢 瀏覽:784
c語言獲取文件夾屬性 瀏覽:918
uedit32的配置文件 瀏覽:980
ads的原始輸入數據有哪些 瀏覽:72
word怎麼鎖定列印文件頭 瀏覽:2
javahashmap多大 瀏覽:61
怎麼區分釣魚網站 瀏覽:707
5s怎麼升級系統 瀏覽:727
街上賣假蘋果 瀏覽:356
v880t卡升級包237 瀏覽:756
音樂手機文件名 瀏覽:33
ostasksuspend源代碼 瀏覽:490
文件起草說明的格式 瀏覽:447
iphone網路鎖是什麼 瀏覽:627

友情鏈接