Java 为什么我的对象ArrayList循环结果不正确?
我创建了CompanyRecord的对象Arraylist并在其中插入值。但当我循环时,数据是错误的Java 为什么我的对象ArrayList循环结果不正确?,java,Java,我创建了CompanyRecord的对象Arraylist并在其中插入值。但当我循环时,数据是错误的 public class CompanyRecord { private String Code; private String Name; public void setValue(String value1,String column1) { if (column1.equals("Code")) { this.Code=value1; } e
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;
}
}
}
循环和插入代码为:
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"));
}
ArrayList codelist=new ArrayList();
CompanyRecord codeItem=新的CompanyRecord();
codeItem.setValue(“第一个”、“代码”);
codeItem.setValue(“1”、“名称”);
添加(代码项);
codeItem.setValue(“第二个”、“代码”);
codeItem.setValue(“2”,“名称”);
添加(代码项);
codeItem.setValue(“第三”、“代码”);
codeItem.setValue(“3”,“名称”);
添加(代码项);
对于(intj=0;j,您需要为每个对象实例化一个新对象
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code"); codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord();
codeItem.setValue("second", "Code"); codeItem.setValue("2", "Name");
codelist.add(codeItem);
您需要为每个对象实例化一个新对象
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code"); codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord();
codeItem.setValue("second", "Code"); codeItem.setValue("2", "Name");
codelist.add(codeItem);
您需要创建新的对象
List<CompanyRecord> codelist = new ArrayList<CompanyRecord>();
CompanyRecord codeItem = new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem = new CompanyRecord();
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem = new CompanyRecord();
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
codelist.forEach(e -> {
System.out.println(e.getValue("Name"));
});
List codelist=new ArrayList();
CompanyRecord codeItem=新的CompanyRecord();
codeItem.setValue(“第一个”、“代码”);
codeItem.setValue(“1”、“名称”);
添加(代码项);
codeItem=新公司记录();
codeItem.setValue(“第二个”、“代码”);
codeItem.setValue(“2”,“名称”);
添加(代码项);
codeItem=新公司记录();
codeItem.setValue(“第三”、“代码”);
codeItem.setValue(“3”,“名称”);
添加(代码项);
代码列表。forEach(e->{
System.out.println(e.getValue(“Name”);
});
您需要创建新的对象
List<CompanyRecord> codelist = new ArrayList<CompanyRecord>();
CompanyRecord codeItem = new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem = new CompanyRecord();
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem = new CompanyRecord();
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
codelist.forEach(e -> {
System.out.println(e.getValue("Name"));
});
List codelist=new ArrayList();
CompanyRecord codeItem=新的CompanyRecord();
codeItem.setValue(“第一个”、“代码”);
codeItem.setValue(“1”、“名称”);
添加(代码项);
codeItem=新公司记录();
codeItem.setValue(“第二个”、“代码”);
codeItem.setValue(“2”,“名称”);
添加(代码项);
codeItem=新公司记录();
codeItem.setValue(“第三”、“代码”);
codeItem.setValue(“3”,“名称”);
添加(代码项);
代码列表。forEach(e->{
System.out.println(e.getValue(“Name”);
});
我们需要创建新实例以从列表中获取不同的对象
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
在这里,我们使用相同的引用并设置其值三次,因此最终值是最新的赋值
指定新对象
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord();
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord();
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
我们需要创建新实例以从列表中获取不同的对象
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
在这里,我们使用相同的引用并设置其值三次,因此最终值是最新的赋值
指定新对象
CompanyRecord codeItem=new CompanyRecord();
codeItem.setValue("first", "Code");
codeItem.setValue("1", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord();
codeItem.setValue("second", "Code");
codeItem.setValue("2", "Name");
codelist.add(codeItem);
codeItem=new CompanyRecord();
codeItem.setValue("third", "Code");
codeItem.setValue("3", "Name");
codelist.add(codeItem);
不要更改原始代码项的值,每次要将其添加到列表中时,都要创建一个新的代码项。在列表中,您只存储对对象的引用,并且由于您覆盖了该对象中的值,因此您通常会获得上一组值您只创建了记录的一个实例,每次只需设置/更改其字段-您必须s为每个记录创建一个实例(在设置字段之前)-添加列表实例不会创建副本(或创建新副本)(用技术术语来说,它是添加引用、指针)不要更改原始代码项的值,每次要将其添加到列表中时,都要创建一个新的代码项。在列表中,您只存储对对象的引用,并且由于您覆盖了该对象中的值,因此您通常会获得上一组值您只创建了记录的一个实例,每次只需设置/更改其字段-您必须s为每个记录创建一个实例(在设置字段之前)-添加列表实例不会创建副本(或创建新副本)(用技术术语来说,它是添加引用、指针)