【发布时间】:2019-01-18 05:12:11
【问题描述】:
package com.snapfires.pdf;
public class FultonObj {
private String fileNo;
private String parcelId;
private String situs;
public String getFileNo() {
return fileNo;
}
public void setFileNo(String fileNo) {
this.fileNo = fileNo;
}
public String getParcelId() {
return parcelId;
}
public void setParcelId(String parcelId) {
this.parcelId = parcelId;
}
public String getSitus() {
return situs;
}
public void setSitus(String situs) {
this.situs = situs;
}
}
package com.snapfires.pdf;
import java.util.ArrayList;
public class List {
public static void main(String arg[]) {
ArrayList<FultonObj> list = new ArrayList<FultonObj>();
FultonObj fuOb = new FultonObj();
String file1 = "file#1";
String file2 = "file#2";
String file3 = "file#3";
String parcelId1 = "parcelId1";
String parcelId2 = "parcelId2";
String parcelId3 = "parcelId3";
String situs1 = "situs1";
String situs2 = "situs2";
String situs3 = "situs3";
fuOb.setFileNo(file1);
fuOb.setParcelId(parcelId1);
fuOb.setSitus(situs1);
list.add(fuOb);
fuOb.setFileNo(file2);
fuOb.setParcelId(parcelId2);
fuOb.setSitus(situs2);
list.add(fuOb);
fuOb.setFileNo(file3);
fuOb.setParcelId(parcelId3);
fuOb.setSitus(situs3);
list.add(fuOb);
for(int b=0; b<list.size(); b++) {
System.out.println(list.get(b).getFileNo());
System.out.println(list.get(b).getParcelId());
System.out.println(list.get(b).getSitus());
}
}
}
当我运行这个小程序时,我只得到添加到列表中的最后一个对象。虽然它遍历列表,但结果是它打印出最后添加的对象。例如
file#3
parcelId3
situs3
file#3
parcelId3
situs3
file#3
parcelId3
situs3
我希望添加到列表中的所有对象都存在,而不仅仅是最后一个对象。有人可以告诉我为什么这没有发生吗?
我认为每次创建新的 FultonObj 对象都不会解决我的问题。这就是为什么。我正在阅读一个文本文件,其中一行可能只有 file#,第二行可能只有 file# 和 parcelId,第三行可能有 file#、parcelId、situs。或每行文件#、parcelId、位置的任意组合。但是顺序始终相同,这意味着您将始终拥有:file#、parcelId、situs。所以我需要确保 fuOb 是完整的,然后再将其添加到 ArrayList。如果我创建了多个 fuOb,则可能没有一个 fuOb 是完整的,这意味着它具有 file#、parcelId、situs。
【问题讨论】:
-
您正在添加对同一对象的引用
-
每次设置数据时创建新的
FultonObj对象。像 FultonObj fuOb1 = new FultonObj(); fuOb.setFileNo(file1); fuOb.setParcelId(parcelId1); fuOb.setSitus(situs1); list.add(fuOb1); FultonObj fuOb2 = new FultonObj(); fuOb.setFileNo(file2); fuOb.setParcelId(parcelId2); fuOb.setSitus(situs2); list.add(fuOb2);