java中的队(Queue)和栈(Stack)

时间:2021-10-30 17:37:54


转载于:http://blog.csdn.net/u012049667/article/details/17143947

 看着编程思想第四版,爽的是里面的程序,当你理解到这个程序的牛逼之处时,就是你拍板叫好的那一刻,终于连追带赶看到了第十一章持有对象,被这扫描版伤透了眼。写完这个笔记,眼保健操是个好主意。

【队和栈特点实验】

[java]  view plain  copy  print ? java中的队(Queue)和栈(Stack) java中的队(Queue)和栈(Stack)
  1. package com.jay.knowledge.queue_study;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Iterator;  
  5. import java.util.LinkedList;  
  6. import java.util.Queue;  
  7. import java.util.Stack;  
  8.   
  9. /** 
  10.  * @function: Queue的学习(对列,对,就是队列)  典型的先进先出的容器(传送带似) 
  11.  * @author:Jay 
  12.  * @date:2013-12-5 
  13.  */  
  14. public class Queue001 {  
  15.     public static void main(String[] args) {  
  16.         //queue不支持ArrayList,如下会报错  
  17.         //Queue<String> queue = new ArrayList<String>();  
  18.         //queue支持LinkedList  
  19.         /* 
  20.         Queue<String> queue = new LinkedList<String>(); 
  21.         queue.add("one"); 
  22.         queue.add("two"); 
  23.         queue.add("three"); 
  24.         queue.add("four"); 
  25.         queue.add("five"); 
  26.         queue.add("six"); 
  27.          
  28.         Iterator<String> iterator = queue.iterator(); 
  29.         while (iterator.hasNext()) { 
  30.             String q = (String) iterator.next(); 
  31.             //先进先出 
  32.             System.out.print("   "+q); 
  33.         }*/  
  34.           
  35.         Queue<String> queue = new LinkedList<String>();  
  36.         queue.offer("one");  
  37.         queue.offer("two");  
  38.         queue.offer("three");  
  39.         queue.offer("four");  
  40.         queue.offer("five");  
  41.         queue.offer("six");  
  42.         System.out.println("------进队顺序------------");  
  43.         System.out.println("one two three four five six");  
  44.         System.out.println("------出队顺序------------");  
  45.         //,poll删除并移动指针,peek()查询  
  46.         System.out.print("  "+queue.poll());  
  47.         System.out.print("  "+queue.poll());  
  48.         System.out.print("  "+queue.poll());  
  49.         System.out.print("  "+queue.poll());  
  50.         System.out.print("  "+queue.poll());  
  51.         System.out.print("  "+queue.poll());  
  52.         System.out.println();  
  53.         //比较先进后出的Stack  
  54.         Stack<String> stack = new Stack<String>();  
  55.         //进栈  
  56.         stack.push("one");  
  57.         stack.push("two");  
  58.         stack.push("three");  
  59.         stack.push("four");  
  60.         stack.push("five");  
  61.         stack.push("six");  
  62.         System.out.println("------进栈顺序------------");  
  63.         System.out.println("one two three four five six");  
  64.         System.out.println("------出栈顺序------------");  
  65.         //出栈pop删除并移动指针,peek()只拿出最后进栈的值  
  66.         System.out.print("  "+stack.pop());  
  67.         System.out.print("  "+stack.pop());  
  68.         System.out.print("  "+stack.pop());  
  69.         System.out.print("  "+stack.pop());  
  70.         System.out.print("  "+stack.pop());  
  71.         System.out.print("  "+stack.pop());  
  72.     }  
  73. }  


【运行结果】

------进队顺序------------
one two three four five six
------出队顺序------------
  one  two  three  four  five  six
------进栈顺序------------
one two three four five six
------出栈顺序------------
  six  five  four  three  two  one
【方法说明】

1.栈(Stack):

①peek():只取出栈顶值,但不会对栈进行操作,如果不断去做操作,最后的得到的值是相同,此值是最后进去的值。

②push(T):向栈中添加值。

③pop():出栈,并操作栈,取出后进去的值,并删除,然后移动指针。

2.队列(Queue)

①peek():只取出队列中的值,不会对栈进行操作,如果不断去做操作,最后的得到的值是相同,此值是最先进去的值。

②offer(T):向队列中添加值。

③poll():出队列,并操作队列,取出先进队列的值,并删除,然后移动指针。