kk cria:
Eu crio um objeto ArrayList de CompanyRecord e valor de inserção nele. Mas quando eu ciclo dos dados é errado.
public class CompanyRecord {
private String Code;
private String Name;
public void setValue(String value1,String column1)
{
if (column1.equals("Code"))
{
this.Code=value1;
}
else
{
this.Name=value1;
}
}
public String getValue(String column1)
{
if (column1.equals("Code"))
{
return Code;
}
else
{
return Name;
}
}
}
O código de circuito e inserto é:
ArrayList<CompanyRecord> codelist=new ArrayList<CompanyRecord>();
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
odelist.add(codeItem);
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
for (int j=0;j<codelist.size();j++)
{
System.out.println(codelist.get(j).getValue("Code")+'\t'+codelist.get(j).getValue("Name"));
}
Eu acho que o resultado deve ser um primeiro, segundo 2, thrid 3. Mas em vez disso é três linhas de terceira 3. Qual é o problema? Estou realmente confuso. Qualquer ajuda? Obrigado.
Kris:
ArrayList<CompanyRecord> codelist=new ArrayList<CompanyRecord>();
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
odelist.add(codeItem);
codeItem.setValue("second", "Code"); #Overwritten existing object
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem.setValue("third", "Code"); #Overwritten existing object
codeItem.setValue("3", "Name");
codelist.add(codeItem);
for (int j=0;j<codelist.size();j++)
{
System.out.println(codelist.get(j).getValue("Code")+'\t'+codelist.get(j).getValue("Name"));
}
É um erro em seu código. Você está substituindo o mesmo objeto com novos valores. Você tem que criar um novo CompanyRecord
objeto para cada .add()
chamada da lista. Somando-se uma lista não remove a referência, o que sempre mudar você faz em um objeto, ele irá refletir.
Deve ser como
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord(); #create new object
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
......