Dúvida Simples de Lista JAVA

Galera, estou com uma dúvida sobre o código abaixo
A classe Pattern tem duas listas somente

Eu leio do excell um arquivo com tres coluna
a cada linha eu faço um objeto pattern com uma lista pegando o valor das duas primeiras colunas, e outra pegando o valor da ultima

Eu consigo ler certinho os objetos patter e adicionalo a uma lista “lop” (list of patterns) maaas
assim q eu crio um novo objeto pattern (dentro do for) e associo a ele as tres NOVAS informações ele altera NA LISTA as informações anteriores fazendo
com que todos objetos da lista fiquem iguais!!

Eis o código

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import jxl.Workbook;


public class Reader {

    Workbook workbook;
    
    public Reader(String arquivo) throws Exception{
         /* pega o arkivo do Excel */  
         workbook = Workbook.getWorkbook(new File(arquivo));    

    }
    
    public String makeDoubleFormat(String a){
        if(!(a.contains(","))) return a;
        else{
            StringTokenizer st = new StringTokenizer(a, ",");
            StringBuffer sb = new StringBuffer();
            sb.append(st.nextToken());
            sb.append(".");
            sb.append(st.nextToken());
            return sb.toString();
        }
       
        
       
    }
    
    public List<Pattern> ReadPatterns(int numberOfOutputs){
      
        ArrayList<Pattern> lop =  new ArrayList<Pattern>();
        
        
        for(int i = 0; i < workbook.getSheet(0).getRows(); i++){ 
          Pattern aux = new Pattern();
          
            for(int j = 0; j < workbook.getSheet(0).getColumns(); j++){             
                if(j < workbook.getSheet(0).getColumns() -numberOfOutputs){
                    aux.getListOfInputs().add(Double.parseDouble(makeDoubleFormat((workbook.getSheet(0).getCell(j, i).getContents()))));
                }
                else{
                    aux.getListOfOutputs().add(Double.parseDouble(makeDoubleFormat((workbook.getSheet(0).getCell(j, i).getContents()))));
                }
            }
            
            lop.add(aux);
            

             aux = null;
                    
        return lop;
    }
}
for(int i = 0; i < workbook.getSheet(0).getRows(); i++){ 
          Pattern aux = new Pattern();
          
            for(int j = 0; j < workbook.getSheet(0).getColumns(); j++){             
                if(j < workbook.getSheet(0).getColumns() -numberOfOutputs){
                    aux.getListOfInputs().add(Double.parseDouble(makeDoubleFormat((workbook.getSheet(0).getCell(j, i).getContents()))));
                }
                else{
                    aux.getListOfOutputs().add(Double.parseDouble(makeDoubleFormat((workbook.getSheet(0).getCell(j, i).getContents()))));
                }
            }
            
            lop.add(aux);
            

             aux = null;
                    
        return lop;
    }
}

Antes do ‘for’ mais interno você está criando seu objeto Pattern, e por mais vezes que esse ‘for’ rodar, ele estará alterando esse mesmo objeto. Acho que é esse o problema.

primeiro, mto obrigado pela resposta
mas é esta mesma a lógica, para cada linha(Row) da planilha, eu tenho um Pattern com três dados que são setados no “for” de baixo
O problema é que depois que o “for” de baixo acaba (e esse objeto pattern é adicionado na lista) e volta para o de cima, um NOVO objeto pattern era pra ser criado
assim como mostra a linha “Pattern aux = new Pattern();” mas quando eu vou setar os três dados deste NOVO pattern o antigo NA LISTA é alterado! NA LISTA!
Não estou entendendo pq…
alguém sabe pq?..