Java編程思想里的泛型實(shí)現(xiàn)一個(gè)堆棧類 分享
覺得作者寫得太好了,不得不收藏一下。
對(duì)這個(gè)例子的理解:
//類型參數(shù)不能用基本類型,T和U其實(shí)是同一類型。
//每次放新數(shù)據(jù)都成為新的top,把原來(lái)的top往下壓一級(jí),通過(guò)指針建立鏈接。
//末端哨兵既是默認(rèn)構(gòu)造器創(chuàng)建出的符合end()返回true的節(jié)點(diǎn)。
//: generics/LinkedStack.java
// A stack implemented with an internal linked structure.
package generics;
public class LinkedStack<T> {
private static class Node<U> {
U item;
Node<U> next;
Node() { item = null; next = null; }
Node(U item, Node<U> next) {
this.item = item;
this.next = next;
}
boolean end() { return item == null && next == null; }
}
private Node<T> top = new Node<T>(); // End sentinel
public void push(T item) {
top = new Node<T>(item, top);
}
public T pop() {
T result = top.item;
if(!top.end())
top = top.next;
return result;
}
public static void main(String[] args) {
LinkedStack<String> lss = new LinkedStack<String>();
for(String s : "Phasers on stun!".split(" "))
lss.push(s);
String ss;
while((ss = lss.pop()) != null)
System.out.println(ss);
//----- if put integer into the LinkedList
LinkedStack<Integer> lii = new LinkedStack<Integer>();
for(Integer i = 0; i < 10; i++){
lii.push(i);
}
Integer end;
while((end = lii.pop()) != null)
System.out.println(end);
//----- integer test end!
}
}
/* Output:
stun!
on
Phasers
*/
- 利用數(shù)組實(shí)現(xiàn)棧(Java實(shí)現(xiàn))
- 淺談Java數(shù)組的一些使用方法及堆棧存儲(chǔ)
- Java中使用數(shù)組實(shí)現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)實(shí)例
- JAVA中堆、棧,靜態(tài)方法和非靜態(tài)方法的速度問題
- Java實(shí)現(xiàn)棧和隊(duì)列面試題
- java中棧和隊(duì)列的實(shí)現(xiàn)和API的用法(詳解)
- Java使用Deque實(shí)現(xiàn)堆棧的方法
- 用Java代碼實(shí)現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)的基本方法歸納
- java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)示例分享
- JAVA基于靜態(tài)數(shù)組實(shí)現(xiàn)棧的基本原理與用法詳解
相關(guān)文章
LambdaQueryWrapper與QueryWrapper的使用方式
這篇文章主要介紹了LambdaQueryWrapper與QueryWrapper的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
java集合中的迭代器Iterator和數(shù)組內(nèi)置方法及常見的報(bào)錯(cuò)解決方案
文章介紹了Java集合框架中迭代器(Iterator)的使用,以及數(shù)組和集合的內(nèi)置方法,重點(diǎn)解釋了在遍歷集合時(shí)刪除元素時(shí)可能出現(xiàn)的`ConcurrentModificationException`異常,并說(shuō)明了如何正確地使用迭代器來(lái)刪除集合中的元素,感興趣的朋友跟隨小編一起看看吧2025-02-02
Java編程實(shí)現(xiàn)基于圖的深度優(yōu)先搜索和廣度優(yōu)先搜索完整代碼
這篇文章主要介紹了Java編程實(shí)現(xiàn)基于圖的深度優(yōu)先搜索和廣度優(yōu)先搜索完整代碼,具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
struts2的國(guó)際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼
本篇文章主要介紹了struts2的國(guó)際化實(shí)現(xiàn)網(wǎng)站整體中英文切換實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Java concurrency集合之ConcurrentSkipListSet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
MybatisPlus多數(shù)據(jù)源及事務(wù)解決思路
這篇文章主要介紹了MybatisPlus多數(shù)據(jù)源及事務(wù)解決思路,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
TransmittableThreadLocal解決線程間上下文傳遞煩惱
這篇文章主要為大家介紹了TransmittableThreadLocal解決線程間上下文傳遞煩惱詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Filter中獲取傳遞參數(shù)方式(解決post請(qǐng)求參數(shù)問題)
這篇文章主要介紹了Filter中獲取傳遞參數(shù)方式(解決post請(qǐng)求參數(shù)問題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

