Como faço para fazer um sistema de estoque, usando duas estruturas de dados ao mesmo tempo?

Como faço para fazer um sistema de estoque, usando duas estruturas de dados ao mesmo tempo?[size=18] [/size]

[code]package Entidades;

public class estoque {
private String limpeza;
private String cereais;
private String diversos;

public estoque(String limpeza, String cereais, String diversos){

   this.limpeza = limpeza;
   this.cereais = cereais;
   this.diversos = diversos;

}

public String getLimpeza() {
return limpeza;
}
public void setLimpeza(String limpeza) {
this.limpeza = limpeza;
}
public String getCereais() {
return cereais;
}
public void setCereais(String cereais) {
this.cereais = cereais;
}
public String getDiversos() {
return diversos;
}
public void setDiversos(String diversos) {
this.diversos = diversos;
}

public String mosTrarEstoque(){

String estoque = “Os produtos cadastrados foram: “+”\n Limpeza” + limpeza
+ “\n Cereais " +cereais
+ " Outros produtos” + diversos;

	return estoque;

}

public String MostrarEstoque2(){
String estoque="Os produtos removidos foram: " + limpeza + “: " +cereais+ " : " + diversos;
return estoque;
}
public String MostrarEstoque3(){
String estoque=” produtos: " + limpeza + ": " +cereais+ " : " + diversos;
return estoque;
}
}


package Estruturas;

import javax.swing.JOptionPane;

import Entidades.estoque;

public class Fila {
private estoque[] fila;
private int ultimo,primeiro;
int contador=0;

public Fila(int tamanho){
	fila = new estoque[tamanho];
	ultimo = -1;
	primeiro = 0;
}  
public void adiciona(estoque estoque){
	if(ultimo < fila.length-1 ){
		ultimo++;
		fila[ultimo] = estoque;
	}else{
		JOptionPane.showMessageDialog(null, "Fila Cheia");
	}
}
public estoque remove(){
	estoque temp;
	if(ultimo != -1){
		temp=fila[primeiro];
		primeiro++;
	if(primeiro > ultimo){
		primeiro=0;
		ultimo=-1;
	}
	return(temp);
	}else{
		System.out.println("Status: Fila");
		return  (null);
	}
}
public void mostraProx(){
	for(int i= primeiro; i <=ultimo ; i++){
		JOptionPane.showMessageDialog(null, fila[i].mosTrarEstoque());
	}
	if(ultimo == -1){
		JOptionPane.showMessageDialog(null, "vazia");
	}
}
public boolean verificar(){
	return (ultimo == -1);
}
public int tamanho(){
	return ultimo + 1;
}

}


package Estruturas;

import Entidades.estoque;

public class Stack {
private int maxSize;
private estoque[] stackArray;
private int top;
//metodo construtor
public Stack(int s)
{
maxSize = s;
stackArray = new estoque[maxSize];
top = -1;
}
//insere elementos na pilha
public void push(estoque stackAux)
{
stackArray[++top] = stackAux;
}

   public estoque pop(){
       
      return stackArray[top--];  
      }
   
   public estoque peek(){
       
      return stackArray[top];  
      }
   
 //verifica se a pilha está vazia
   public boolean isEmpty(){
       
      return (top == -1);
      }
   
 //verifica se a pilha está cheia
   public boolean isFull(){
       
      return (top == maxSize-1);
      }
   
    public int getTop() {
        return top;
    }
   [b] public static void exibePilha(){ //exibe os elementos da pilha
        String str = "";
        for (int i = 0; i < length; i++) {
            if(estoque[i] != null)
            str += estoque[i];
        }
    }[/b]

Erro não to conseguindo exibir o o que foi removido tanto na pilha e na fila
}


package SistemaEstoque;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import Entidades.estoque;
import Estruturas.Fila;
import Estruturas.Stack;

public class IniciarSistema {

public static void main(String[] args) {
	estoque temp;
	
	JOptionPane.showMessageDialog(null, "Seja Bem vindo ao Systema de Estoque Pelejar","SysEstoque",1);
	JOptionPane.showMessageDialog(null, "Pelejando você consegue!","SysEstoque",1);
	Stack pilha = new Stack(Integer.parseInt(JOptionPane
			.showInputDialog("Quantas lista de compras você deseja efetuar?")));
	int tam=Integer.parseInt(JOptionPane.showInputDialog("Quantas lista de compras você deseja efetuar?"));
	ArrayList<estoque> lista1 = new ArrayList<estoque>();
	Fila fila = new Fila(tam);
	int operação = Integer.parseInt(JOptionPane.showInputDialog(""
			+" Escolha uma das opções!"
			+ "\n1 - Cadastrar Produtos no Sistema" 
			+ "\n2 - Remover Produtos do Sistema "
			+ "\n3 - Verificar se a pilha estar Cheia de produtos"
			+ "\n4 - VERIFICAR QUANTIDADES DE VALORES INSERIDOSSistema"
			+ "\n5 - MOSTRAR PROXIMO VALOR DA FILA no Sistema"
			+ "\n6 - Sair" ));

	while (operação != 6) {
		if (operação == 1) {
			JOptionPane.showMessageDialog(null, "Escolha sua lista de compras");
			String limpeza = JOptionPane
					.showInputDialog("Quais produto de limpeza você deseja?"+" ");
			String cereais = JOptionPane
					.showInputDialog("Quais cereais você deseja?"+" ");
			String diversos = JOptionPane
					.showInputDialog("Quais outro tipo de produto você deseja?"+" ");

			estoque e1 = new estoque(limpeza, cereais, diversos);

			if (!pilha.isFull()) {

				pilha.push(e1);
				fila.adiciona(e1);
				JOptionPane.showMessageDialog(null, "Lista de compras efetuada com sucesso");

			} else {

JOptionPane.showMessageDialog(null,
"Infelizmente a Pilha do sistema esta Cheia de lista de compras, Desculpe-me o transtorno");

			}

		} else if (operação == 2) {

			if (!pilha.isEmpty()) {

				temp = pilha.pop();
				JOptionPane.showMessageDialog(null, "Produto Removido com Sucesso:\n"+temp.MostrarEstoque2());
				temp.mosTrarEstoque();

			} else {

				JOptionPane.showMessageDialog(null, "A Pilha está vazia");

			}

		}

		else if (operação == 3) {

			if (pilha.isEmpty()) {

				JOptionPane.showMessageDialog(null, "A Pilha está vazia");

			} else if (pilha.isFull()) {

				JOptionPane.showMessageDialog(null, "A Pilha está cheia");

			} else {

				int Quantidadesdeprodutos = pilha.getTop();
				Quantidadesdeprodutos++;
				JOptionPane.showMessageDialog(null,
						"A Pilha não está cheia nem vazia. " + "Possui  "
								+" "+ Quantidadesdeprodutos + " lista de produtos cadastrados");

			}

		} else if (operação == 4) {

			 fila.mostraProx();

		}

		else if (operação == 5) {
                   
			JOptionPane.showMessageDialog(null, fila.tamanho());
		}

		operação = Integer.parseInt(JOptionPane.showInputDialog(""
				+ "\n1 - Cadastrar Produtos" 
				+ "\n2 - Remover Produtos"
				+ "\n3 - Verificar se a pilha estar Cheia"
				+ "\n4 - Verificar ultimo Produto Cadastrado"
				+ "\n5 - Informar quantos Produtos Cadastrados"
				+ "\n6 - Sair do Programa"));

	}

	JOptionPane.showMessageDialog(null, "Você Saiu do Programa");

}

}
[/code]