gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:51:47 25 4
gpt4 key购买 nike

我有一个 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());
}

}

我从上面得到的输出是:

团队 ID 为:1

团队 ID 为:2

团队 ID 为:3

团队 ID 为:4

团队信息:4

团队信息:4

团队信息:4

团队信息:4

我错过了什么..?为什么前 3 个元素丢失了..?

最佳答案

这是因为您在循环中添加相同的对象,而您应该在循环中创建该对象以将其添加到列表中:

Team team;
while ((line=br.readLine()) != null){
team = new Team();//new object
teams.add(team);//added to list
...
}

关于java列表仅返回最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com