日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中集合(三)Stack

發布時間:2024/4/30 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。