如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();
}
}
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();
}
}
Deque和Stack没关系,他们不存在继承的关系
Deque继承Queue,而Queue继承Collection,Collection集合本身并没有get(i)的方法
但是这样就可以说他是没有索引的概念吗?