Java列表仅返回最后一个元素

我有一个pojo,尝试将csv文件中的数据读取到列表中,然后将其打印出来。从文件读取工作正常,在读取/添加的瞬间,我可以看到正确的ID,但是一旦尝试将其全部打印回来,我只会得到列表的最后一个元素。以下是我正在尝试的:

    public static void main(String[] args) throws IOException, ParseException{

Charset charset = Charset.forName("UTF-8");

File dir = new File("/Users/vinnar/eclipse_keplar/workspace/vinnar-pojo-projects/src/com/vinnar/pojo/csvfiles");

File file = null;

file = new File(dir.getCanonicalPath()

+ File.separator

+ "Teams.csv");

FileInputStream fis = new FileInputStream(file);

BufferedReader br = new BufferedReader(new InputStreamReader(fis, charset));

String line = null;

Team team = new Team();

List<Team> teams = new ArrayList<Team>();

String csvSeperator = ",";

while ((line=br.readLine()) != null){

String[] t = line.split(csvSeperator);

System.out.println("Team ID is: " + t[0]);

team.setId(Integer.parseInt(t[0]));

team.setName(t[1]);

team.setRank(Integer.parseInt(t[2]));

team.setLstUpdUser(t[3]);

DateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy", Locale.ENGLISH);

team.setLstUpdTime((Date) dateFormat.parse(t[4]));

teams.add(team);

}

br.close();

for(Team t1:teams){

System.out.println("Team info: " + t1.getId());

}

}

我从上面得到的输出是:

团队编号为:1

团队编号为:2

团队编号为:3

团队编号为:4

球队信息:4

球队信息:4

球队信息:4

球队信息:4

我想念什么..?为什么前三个元素会丢失..?

回答:

在循环之前,您仅创建了一个Team对象。您一直用读取的条目替换其内容,因此它仅表示最后一行。然后,您已用同一对象多次填充列表。在循环中创建团队。

以上是 Java列表仅返回最后一个元素 的全部内容, 来源链接: utcz.com/qa/399172.html

回到顶部