Migrar classe com array para arraylist

Salve Galera,

Alguem poderia me ajudar a migrar a classe abaixo para array arraylist ou linkedlist?


public class Revenda {

	private Produto produtos[];
	private static int numeroProdutos = 0;

	public Revenda(int quantidadeProdutos){
		produtos = new Produto [quantidadeProdutos];
	}//fim do construtor Revenda(int quantidadeProdutos)

	public void inserirProduto(Produto produto){
		int i=0;

		int tamanho = produtos.length;
		while (i<tamanho && produtos[i]!=null){
			i++;
		}//fim do while
		if (i == tamanho) {
			System.out.println("Vetor Cheio");
		}//fim do if
		else {
			produtos [i]=produto;
			numeroProdutos++;
		}//fim do else
	}//fim do metodo inserirProduto (Produto produto)

	public void excluirProduto (int codigoProduto){

		boolean achouProduto = false;
		int i=0;
		int tamanho = produtos.length;
		while (i<tamanho){
			Produto produto = produtos[i];
			if (produto != null){
				if (codigoProduto == produto.getCodigo()) {
					produtos[i] = null;
					numeroProdutos--;
					achouProduto = true;
					break;
				}//fim di if
			}//fim do if
			i++;
		}//fim do while
		if (achouProduto == false) {
			System.out.println("Produto não encontrado para excluir");
		}//fim do if
	}//fim do metodo excluirProduto(int codigoProduto)

	public void comprar(int codigoProduto, int quantidadeUnidades){

		boolean achouProduto = false;
		int i=0;
		int tamanho = produtos.length;
		while (i<tamanho){
			Produto produto = produtos[i];
			if (produto != null){
				if (codigoProduto == produto.getCodigo()) {
					int qtd_estoque = produto.getQtd_estoque();
					produto.setQtd_estoque(qtd_estoque+quantidadeUnidades);
					achouProduto = true;
					break;
				}//fim do if
			}//fim do if
			i++;
		}//fim do while
		if (achouProduto == false) {
			System.out.println("Produto não encontrado para comprar");
		}//fim do if
	}//fim do metodo comprar(int codigoProduto, int quantidadeUnidades))

	public void vender(int codigoProduto, int quantidadeUnidades){

		boolean achouProduto = false;
		int i=0;
		int tamanho = produtos.length;
		while (i<tamanho){
			Produto produto = produtos[i];
			if (produto != null){
				if (codigoProduto == produto.getCodigo()) {
					if (quantidadeUnidades>produto.getQtd_estoque()){
						System.out.println("Quantidade de produto em estoque insuficiente");
						achouProduto = true;
						break;
					}//fim do if
					else
					{
						int qtd_estoque = produto.getQtd_estoque();
						produto.setQtd_estoque(qtd_estoque-quantidadeUnidades);
						achouProduto = true;
						break;
					}//fim do else
				}//fim do if
			}//fim do if
			i++;
		}//fim do while
		if (achouProduto == false) {
			System.out.println("Produto não encontrado para vender");
		}//fim do if
	}//fim do metodo vender(int codigoProduto, int quantidadeUnidades)

	public void consultaPrecoVenda(int codigoProduto){

		boolean achouProduto = false;
		int i=0;
		int tamanho = produtos.length;
		while (i<tamanho){
			Produto produto = produtos[i];
			if (produto != null){
				if (codigoProduto == produto.getCodigo()) {
						System.out.println("Valor de venda é "+produto.calculaPrecoVenda());
						achouProduto = true;
						break;
				}//fim do if
			}//fim do if
			i++;
		}//fim do while
		if (achouProduto == false) {
			System.out.println("Produto não encontrado");
		}//fim do if
		
	} //fim do metodo consultaPrecoVenda(int codigoProduto)

	public void listaPrecos(){

		int i=0;
		int tamanho = produtos.length;
		while (i<tamanho){
			Produto produto = produtos[i];
			if (produto != null){
				System.out.println("Código = " + produto.getCodigo());
				System.out.println("Descrição = " + produto.getDescricao());
				System.out.println("Valor de Venda = " + produto.calculaPrecoVenda());
			}
			i++;
		}
	}//fim do metodo listaPrecos()

	public void inserirProduto(ProdutoComGerador produto1) {
		// TODO Auto-generated method stub
		
	}
}//fim da classe Revenda