阵列列表仅显示最近添加的对象

时间:2019-01-18 05:12:12

标签: java arrays

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,situus。或每行file#,parcelId,situs的任意组合。但是顺序将始终相同,这意味着您将始终拥有:file#,parcelId,situs。因此,在将fuOb添加到ArrayList之前,需要确保它已完成。如果我创建多个fuOb,则可能所有fuOb都不完整,这意味着它具有file#,parcelId,situs。

2 个答案:

答案 0 :(得分:2)

您的程序应该是这样的。每次在fuOb中设置数据时,它都会覆盖以前的数据。

FultonObj fuOb1 = new FultonObj(); 
fuOb1.setFileNo(file1); 
fuOb1.setParcelId(parcelId1); 
fuOb1.setSitus(situs1); 
list.add(fuOb1); 

FultonObj fuOb2 = new FultonObj(); 
fuOb2.setFileNo(file2); 
fuOb2.setParcelId(parcelId2); 
fuOb2.setSitus(situs2); 
list.add(fuOb2);

答案 1 :(得分:1)

使三个FultonObj不使用一个

    fuOb1.setFileNo(file1);
    fuOb1.setParcelId(parcelId1);
    fuOb1.setSitus(situs1);
    list.add(fuOb1);

    fuOb2.setFileNo(file2);
    fuOb2.setParcelId(parcelId2);
    fuOb2.setSitus(situs2);
    list.add(fuOb2);

    fuOb3.setFileNo(file3);
    fuOb3.setParcelId(parcelId3);
    fuOb3.setSitus(situs3);
    list.add(fuOb3);