如何直接从文件向Java中的ArrayList添加项?

如何直接从文件向Java中的ArrayList添加项?,java,file,arraylist,Java,File,Arraylist,这似乎很容易,但我无法做到,尽管我是在C#中做到的。 为了这个例子,我将保持简单。 我有一个Person类,包含name和age字段。我有构造函数、getter和setter 在我的主类中,我想从文件中读取数据并创建一个Person对象,该对象将添加到ArrayList。下面是代码中似乎不正常的部分。我使用了一个调试器,看到读数是正确的,我的文本文件的每一行都在p变量的某个点上,但是当我打印时,它只显示文件中最后一个人的x次(其中x是文件中的人数)。我使用了I变量,因为我在网上看到.add有重载

这似乎很容易,但我无法做到,尽管我是在C#中做到的。 为了这个例子,我将保持简单。 我有一个
Person
类,包含
name
age
字段。我有构造函数、getter和setter

在我的主类中,我想从文件中读取数据并创建一个
Person
对象,该对象将添加到
ArrayList
。下面是代码中似乎不正常的部分。我使用了一个调试器,看到读数是正确的,我的文本文件的每一行都在
p
变量的某个点上,但是当我打印时,它只显示文件中最后一个人的x次(其中x是文件中的人数)。我使用了
I
变量,因为我在网上看到
.add
有重载。第一次我只尝试了
lst.add(p)
,第二次我使用了
I
变量来指定
I
希望我的人在列表中的哪个位置

File f = new File("fisier.txt");

    try{
        Scanner scn = new Scanner(f);
        int i = 0;
        while(scn.hasNext()){
            p.nume = scn.next();
            p.varsta = scn.nextInt();
            lst.add(i,p);
            i++;
        }
        scn.close();

    } catch(FileNotFoundException e){
        e.printStackTrace();
    }
    for(Persoana a : lst)
        System.out.println(a.nume + " " + a.varsta);
}

您需要在循环中创建
Person
的新实例:

while(scn.hasNext()) {
    String name = scn.next();
    int age = scn.nextInt();
    Person p = new Person(name, age);
    lst.add(p); // simply add to the end of the list
}

每次
扫描仪
读取新值时,您都使用相同的对象,因此每次您能够获取新值时,都需要创建一个新的
Person
对象

例如

while(scn.hasNext()){
    int age = scn.next();
    String name = scn.nextInt();
    Person p = new Person(name, age);
    lst.add(p);
 }

创建此人的实例。

确定。我现在试过了,成功了。我忘了我每次都得换一个人,现在我为问这样的问题感到难过。谢谢你的快速回复。
while(scanner.hasNext()) 
{
  String name = scanner.next();
  int age = scanner.nextInt();
  Person person = new Person(name, age);
  list.add(person);
}