Boa tarde,
tenho aqui algumas duvidas, quanto ao entendimento de Deque.
Deque tem alguns metodos como: addFirst(E e); addLast(E e); removeFirst(); removeLast();
addFirst - Insere o objeto passado na frente:
addFirst(5);
addFirst(7);
addFirst(0);
saída: [0][7][5] até ai tudo bem;
quando vou usar o addLast onde deve ser inserido? contanto que ja tenha isso: [0][7][5]
seria no fim do deque? [0][7][5] [insere aqui]
pesquisei alguns exemplos e so tenho esse retorno:
addFirst(5);
addFirst(7);
addFirst(0);
saída: [0][7][5]
quando uso o addLast me retorna isso:
addLast(20);
[20][0][7][5]
e assim por diante.
Está certo esse conceito?
Use o método “escreva um pequeno programa” ou “escreva um Hello World”.
Rodando o seguinte programa, vi que você não entendeu direito o conceito de deque.
É mais simples que parece:
package guj;
import java.util.ArrayDeque;
import java.util.Deque;
public class TesteDeque {
public static void main(String[] args) {
Deque<Integer> deque = new ArrayDeque<Integer>();
deque.addFirst(10); deque.addFirst(20); deque.addFirst(30);
System.out.println (deque); // [30, 20, 10]
deque.addLast(40); deque.addLast(50); deque.addLast(60);
System.out.println (deque); // [30, 20, 10, 40, 50, 60]
}
}
Então o que eu entendi era pra ser isso mesmo que voce postou,
mas toda pesquisa que fiz foi adicionar First sempre para a esquerda, até ai tudo bem,
mas quando adiciono o Last ele sempre adiciona para a direita e inicia da primeira posição deque[0];
vou postar os metodos que encontrei:
deque.addFirst(4);
deque.addLast(3);
deque.addFirst(2);
saída: [3] [2] [4] onde o correto não seria: [3] [4] [2]
[code]public DequeArray(Class classe, int capacidade) { // Construtor
this.capacidade = capacidade;
deque = (T[]) Array.newInstance(classe, capacidade);
frente = 0;
fim = 0;
total = 0;
}
@Override
public void addFirst(T elemento) {
if (frente == 0)
frente = capacidade;
deque[--frente] = elemento;
total++;
}
@Override
public void addLast(T elemento) {
if (fim == capacidade - 1)
fim = -1;
deque[++fim] = elemento;
total++;
}
[/code]
Ah, mas é que você implementou “deque” como uma fila circular. Se fizer assim, você precisa implementar corretamente a parte da impressão da fila, que é onde você se estrepou.
Então quer dizer que o erro está na impressão!? Vou tentar aqui 
Estou imprimindo de forma convencional:
[code]public void imprimir() {
if (isEmpty()) {
System.out.println("deque vazio");
}
for (int i = 0; i < deque.length; i++) {
if (deque[i] != null) {
System.out.print("[" + deque[i] + "] ");
}
}
}[/code]