首頁 >常見問題 >堆疊區別

堆疊區別

藏色散人
藏色散人原創
2019-06-03 14:07:3027375瀏覽

堆疊區別

堆疊與堆疊的差異:

一、堆疊空間分配差異:

1、堆疊(作業系統):由作業系統自動分配釋放,存放函數的參數值,局部變數的值等。其操作方式類似資料結構中的堆疊;

2、堆疊(作業系統): 一般由程式設計師指派釋放, 若程式設計師不釋放,程式結束時可能由OS回收,則分配方式倒是類似於鍊錶。

二、堆疊快取方式區別:

1、堆疊使用的是一級緩存, 他們通常都是被呼叫時處於儲存空間中,調用完畢立即釋放;

2、堆是存放在二級快取中,生命週期由虛擬機器的垃圾回收演算法來決定(並不是一旦成為孤兒物件就能被回收)。所以呼叫這些物件的速度要相對來得低一些。

堆:記憶體中,儲存的是引用資料類型,引用資料型別無法確定大小,堆實際上是一個在記憶體中使用到記憶體中零散空間的鍊錶結構的儲存空間,堆的大小由引用類型的大小直接決定,引用類型的大小的變化直接影響到堆的變化

棧:是內存中存儲值類型的,大小為2M,超出則會報錯,內存溢出

三、堆疊資料結構區別:

堆疊(資料結構):堆疊可以被看成是一棵樹,如:堆排序;

#堆疊(資料結構):一種先進後出的資料結構。

特點:先進後出

對於先進後出,因為Linklist底層實現的是鍊錶結構,所以我們拿Linklist來探索一下什麼叫先進後出

程式碼如下:

package com.zking.list;
 
import java.util.LinkedList;
 
public class Linklisttest {
 
public static void main(String args[]) {
LinkedList ll = new LinkedList();
for (int i = 0; i < 5; i++) {
ll.addFirst(i);
}
 
ll.removeFirst();
 
for (Object object : ll) {
System.out.println(object);
}
 
}
 
}

運行結果:

堆疊區別

#根據這個簡單的實例我們可以看出,透過for循環我們在集合中添加資料的順序分別為0,1,2,3,4,

當執行刪除方法的時候4被刪除,最後遍歷出的結果為3,2,1,0

所以它體現了堆疊的特徵:先進後出。 。

以上是堆疊區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn