【问题标题】:Overwriting in add object to arraylist将对象添加到数组列表中的覆盖
【发布时间】:2015-06-25 17:32:34
【问题描述】:

这件事让我头疼了一阵子,我试图找出问题所在,但找不到答案。基本上,它会覆盖列表中的每一个之前的对象。

public class ProcessadorDeSinaisImpl implements ProcessadorDeSinais {

private List<GeradorDeEvento> gerador = new ArrayList<GeradorDeEvento>();

private List<Evento> listaEvento = new ArrayList<Evento>();


public void adicionarGerador(GeradorDeEvento geradorDeEvento) {
    gerador.add(geradorDeEvento);
}   

public List<Evento> processarSinais(List<Sinal> sinais) { // Lista de sinais gerada pelo GeradorDeSinais !!!!
    Evento resultado;
    for(int i=0; i < gerador.size(); i++){
        for(int j=0; j < sinais.size(); j++)
        {
            resultado = new EventoImpl();
            resultado = gerador.get(i).gerarEvento(sinais.get(j));

            if(resultado != null)
            {
                listaEvento.add(resultado); 
            }
        }
    }
    return listaEvento;
}

}

【问题讨论】:

  • 这一行`resultado = new EventoImpl();`没有用,因为resultado在下一行被分配了对不同对象的引用。你到底有什么问题?
  • @alainlompo 我遇到的问题是,即使我从“gerador.get(i).gerarEvento(sinais.get(j)) 收到不为空的 Evento,它们也是当我将它们添加到列表时相互覆盖。这发生在 if 语句之前

标签: java object arraylist add overwrite


【解决方案1】:

尝试做:

 Evento resultado = new EventoImpl();
 resultado = gerador.get(i).gerarEvento(sinais.get(j));

在循环外声明变量可能会导致问题

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2011-05-24
    • 1970-01-01
    • 2013-09-03
    • 2012-08-02
    相关资源
    最近更新 更多