生活随笔
收集整理的這篇文章主要介紹了
Java中集合(三)Stack
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、概述
棧先進后出。將元素放入棧中---入棧、壓棧 ;將元素從棧中取出 --- 出棧、彈棧。最先放入 棧中的元素--- 棧底元素;最后放入棧中的元素 --- 棧定元素。基于Vactor。(參考:http://blog.csdn.net/chou_out_man/article/details/78053955)。底層是數組。內存空間連續,查詢較快,增刪較慢。 二、方法摘要
push() : 向棧中添加一個元素 --- 入棧pop() ; 移除棧頂元素 --- 出棧peek() : 獲取棧頂元素但不移除search() ; 獲取指定元素在棧中的位置 ,從棧頂開始找,基數為1。public static void main(String[] args) {Stack<String> s = new Stack<String>();//入棧 ,左邊為棧底,右邊為棧頂s.push("a");s.push("b");s.push("c");s.push("d");System.out.println(s);//出棧String str = s.pop();System.out.println(str);//獲取而不移除棧頂元素String str1 = s.peek();System.out.println(str1);System.out.println(s);//判斷是否是一個空棧System.out.println(s.isEmpty());//獲取元素在棧中出現的位置,查找元素時是從棧頂到棧底查找,以1為基數、System.out.println(s.search("a"));}
練習: 1. 用Vactor實現Stack
2.?? 用數組實現Stack
1. /*** 用Vector實現Stack* */
public class Demo_01 {public static void main(String[] args) {jiazhuanStack1 j = new jiazhuanStack1();//添加元素j.push("a");j.push("b");j.push("c");j.push("d");System.out.println(j);//彈出棧頂元素j.pop();System.out.println(j);//讀取棧頂元素但不彈出String str = j.peek();System.out.println(str);System.out.println(j);//判斷是否時空棧System.out.println(j.isEmpty());//獲取指定位置的元素System.out.println(j.search("a"));}
}
class jiazhuanStack1{private Vector v;public jiazhuanStack1() {v= new Vector<String>();}//入棧public void push (String str){v.add(str);}//出棧public void pop(){v.remove(this.peek());}//獲取棧頂元素而不移除public String peek(){if(v.isEmpty()){throw new EmptyStackException();}return (String) v.lastElement();//返回棧頂元素}//判斷是不是空public boolean isEmpty(){return v.isEmpty();}//獲取指定元素的位置public int search(String str ){int index = -1; int i = 0;if(str==null){return index;}Enumeration e = v.elements();String str1 = null;while(e.hasMoreElements()){str1 = (String) e.nextElement();if(str1.equals(str)){break;}i++;}return i>=0? v.size() -i:index;}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append("[");for(int i =0;i<v.size();i++){sb.append(v.get(i)+",");}String str = sb.toString();str = str.substring(0,str.length()-1);str+="]";return str;}
}
2.
/*** 用數組實現 Stack* */
public class Demo_02 {public static void main(String[] args) {jiazhuangStack2 j = new jiazhuangStack2();//添加元素j.push("a");j.push("b");j.push("c");j.push("d");System.out.println(j);//彈出棧頂元素j.pop();System.out.println(j);//讀取棧頂元素但不彈出String str = j.peek();System.out.println(str);System.out.println(j);//判斷是否時空棧System.out.println(j.isEmpty());//獲取指定位置的元素System.out.println(j.search("a"));}}
class jiazhuangStack2{private String[] ss;private int size;public jiazhuangStack2() {ss = new String[10]; size = 0;}//入棧public void push(String str ){if(str == null){throw new NullPointerException();}else if(size>=ss.length){//數組擴容一倍Arrays.copyOf(ss, ss.length<< 2);}else{ss[size] = str;size++;}}//出棧public String pop(){String str = this.peek();size--;return str;}//獲取棧頂元素并不移除public String peek(){String str = null;if(ss.length<0){throw new EmptyStackException();}else if(size<=0){//System.out.println("棧中沒有元素");return str;}else{str = ss[size-1];return str;}}//判斷是不是空棧public boolean isEmpty(){return size>0?false :true;}//獲取指定元素的位置public int search(String str){for(int i = 0;i<size-1;i++){if(ss[i].equals(str)){return size - i;}}return -1;}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append("[");for(int i =0;i<size;i++){sb.append(ss[i]+",");}String str = sb.toString();str = str.substring(0,str.length()-1);str+="]";return str;}
}
總結
以上是生活随笔為你收集整理的Java中集合(三)Stack的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。