如Deque的实现类ArrayDeque  可以用for-each方法 来循环其元素,但是翻了API  Deque好像,没有索引的概念啊目的: public void getIndexValue(){
System.out.println("      ****    根据索引来获取值  ****");
for(int i= 0; i<intDeque.length;i++){
System.out.print(stack.get(i).intValue()+", ");
}
}才知道  Stack 索引0在尾部不是头部  所以不管是直接打印,迭代还是循环的输出的结果都与添加元素的顺序相同
而ArrayDeque不管是直接打印,迭代还是循环的输出的结果都与添加元素的顺序相反
问题:Deque到底有没有索引的概念?package wstorm.arrayDeque;import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.Stack;public class ArrayDequeDemo {
private Deque<Integer> deque_stack;  //Deque接口作用与堆栈  FILO
private Integer[] intDeque;
private Deque<Integer> deque_Formation;//作用于队列   FIFO
private Stack<Integer> stack ;
public ArrayDequeDemo(){
stack = new Stack<Integer>();     //头部元素为   6
deque_stack = new ArrayDeque<Integer>();   //头部元素为   6
deque_Formation = new  ArrayDeque<Integer>();   //头部元素为   1
intDeque = new Integer[]{6,2,1,4,8,5};
}//zfhlhr5iugdc m.,ccd你是大笨猪哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
public void add(){
System.out.println("\n\n 添加时的顺序");
for(Integer inta :intDeque){
System.out.print(inta+", ");
stack.push(inta);
deque_stack.push(inta);
deque_Formation.addLast(inta);
}
System.out.println();
}
/*
 * index
 */
public void getIndexValue(){
System.out.println("      ****    根据索引来获取值  ****");
for(int i= 0; i<intDeque.length;i++){
System.out.print(stack.get(i).intValue()+", ");
}
}
/*
 * 直接打印
 */
public void sysoPaly(){
System.out.println("\n            *****  直接打印   *****");
System.out.println("deque_stack \n"+deque_stack);
System.out.println("deque_Formation \n"+deque_Formation);
System.out.println("stack \n"+stack);
System.out.println("\n for-each打印deque_Formation");
for(Integer inta :deque_Formation){
System.out.print(inta+", ");
}
}
/*
 * Iterator
 */
public void getIterator(){
System.out.println("\n            *****  迭代顺序   *****");
Iterator<Integer> itor_deque_stack=deque_stack.iterator();
Iterator<Integer> itor_stack=stack.iterator();
Iterator<Integer> itor_deque_Formation=deque_Formation.iterator();
System.out.println("deque_stack  迭代顺序");
while(itor_deque_stack.hasNext()){
System.out.print(itor_deque_stack.next()+"; ");
}
System.out.println("\n deque_Formation  迭代顺序");
while(itor_deque_Formation.hasNext()){
System.out.print(itor_deque_Formation.next()+"; ");
}
System.out.println("\n stack  迭代顺序");
while(itor_stack.hasNext()){
System.out.print(itor_stack.next()+"; ");
} }
public void pop(){
System.out.println("\n            *****  pop()顺序   *****");
System.out.println("deque_stack  pop()顺序");
while(deque_stack.size()!=0){
System.out.print(deque_stack.pop()+", ");
}
System.out.println("\n deque_Formation  pop()顺序");
while(deque_Formation.size()!=0){
System.out.print(deque_Formation.pop()+", ");
}
System.out.println("\n stack  pop()顺序");
while(stack.size()!=0){
System.out.print(stack.pop()+", ");
}
}
/*
 * private Deque<Integer> deque_Formation;//作用于队列   FIFO
 * 打印全部数据
 */
public void playAll_deque_Formation(){
System.out.println("\n           ****  addLast  ->  removeFirst ******");
while(!(deque_Formation.size()==0)){
System.out.print(deque_Formation.removeFirst()+", ");
}
}

public void allPeek(){
System.out.println("            *****  获取头部元素   *****");
System.out.println("deque_stack peek="+deque_stack.peek());
System.out.println("deque_Formation peek="+deque_Formation.peek());
System.out.println("stack peek="+stack.peek());
}
public static void main(String[] args){
ArrayDequeDemo ayd = new ArrayDequeDemo();
ayd.add();
ayd.allPeek();
ayd.getIndexValue();
ayd.sysoPaly();
ayd.getIterator();
ayd.pop();
ayd.add();
ayd.playAll_deque_Formation();
}
}

解决方案 »

  1.   

    没有索引的概念吧,他只是具备了FIFO/LIFO的特性而已
      

  2.   

    既然底层是用数组实现的 ,感觉还是有index的概念的,动态的?
      

  3.   

    Stack继承于Vector,所以他才有索引的概念
    Deque和Stack没关系,他们不存在继承的关系
    Deque继承Queue,而Queue继承Collection,Collection集合本身并没有get(i)的方法
      

  4.   

    嗯,我也知道他们之间的继承关系,是没有提供get(Object key)方法
    但是这样就可以说他是没有索引的概念吗?