Bem, primeiro você poderia criar uma classe Produto que teria todos os atributos de um produto, mais ou menos assim:
public class Produto {
private String nome;
private double valor;
private int qtde;
private int codigo;
private double subTotal;
public Produto(String nome, double valor, double subTotal, int qtde, int codigo) {
this.nome = nome;
this.valor = valor;
this.subTotal = subTotal;
this.qtde = qtde;
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public double getValor() {
return valor;
}
public double getSubTotal() {
return subTotal;
}
public int getQtde() {
return qtde;
}
public int getCodigo() {
return codigo;
}
}
Assim você poderia usar o Diamond Operator das coleções no ArrayList, o que vai te auxiliar muito quando for usar o ArrayList, porquê vai ter um controle melhor quando estiver adicionando os produtos encontrados . Você também pode fazer um método para achar os produtos com o codigo que você quiser. Tipo assim:
public ArrayList<Produto> procurarProdutosPorCodigo(int codigoProcurado) {
ArrayList<Produto> produtos = new ArrayList<Produto>;
for (int i = 0; i < tabela.getRowCount(); i++) {
int codigo = Integer.parseInt(tabela.getValueAt(i, 11));
if (codigo == codigoProcurado) {
String nome = tabela.getValueAt(i, 3).toString();
double valor = tabela.getValueAt(i, 4);
double subTotal = tabela.getValueAt(i, 6);
int qtde = tabela.getValueAt(i, 5);
produtos.add(new Produto(nome, valor, subTotal, qtde, codigo));
}
}
return produtos;
}
Por ultimo só precisa mostrar os produtos que foram coletados com o método procurarProdutosPorCodigo().
public static void main(String[] args) {
ArrayList<Produto> produtos = procurarProdutosPorCodigo(2);
for (Produto produto : produtos) {
System.out.println(produto.getNome + " | " + produto.getCodigo);
}
}
Esse código que fiz é somente para te orientar, provavelmente não irá funcionar no seu código. Então tente usa-ló como base pra fazer o seu.
Caso tenha mais dúvidas é só falar que tento auxilar.