6

我正在尝试将对象人存储在 ArrayList 中。

我有一个ArrayList<String> customer = new ArrayList<String>();

对象“person”有两个变量:name(字符串)和 pNr(long)。我试图简单地添加它:customer.add(person)但这似乎不起作用。

澄清一下:我不想单独存储变量。我想将整个对象人存储在 ArrayList 中。

我根本不知道如何解决这个问题,或者即使它可以完成。

有人可以指出我正确的方向吗?

4

9 回答 9

19

更改您的List,使其接受Person 对象而不是String.

List<Person> customer = new ArrayList<Person>();
Person p = .....;
customer.add(person);
于 2013-02-01T14:16:05.000 回答
13

人员类

public class Person {       
    String name;
    long pNr;    

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getPNR() {
        return pNr;
    }

    public void setPNR(long pNr) {
        this.pNr = pNr;
    }   
}

创建人员对象

Person person = new Person();
person.setName("Name");
person.setPNR(pNr);

添加到 ArrayList

ArrayList<Person> personList = new ArrayList<Person>();
personList.add(person);

检索数据

String selectedName = personList.get(i).getName();
于 2013-02-01T14:26:23.560 回答
3

您需要将 aList与不同的泛型类型一起使用。由于当前指定的泛型类型ListString它只允许您将类型的对象添加String到列表中。

List<Person> customer = new ArrayList<Person>();

我还建议使用该List接口,以防需要切换到不同的实现,例如LinkedList.

于 2013-02-01T14:17:28.553 回答
3

看这个

import java.util.ArrayList;
import java.util.List;

public class Tester4 {

    public static void main(String args[]) {

        List<Person> persons = new ArrayList<Person>();

        Person person = new Person();
        person.setName("Tester");
        person.setPersonNr(1245L);
        persons.add(person);

        person = new Person();
        person.setName("Tester 2");
        person.setPersonNr(1299L);
        persons.add(person);
    }
}

class Person {

    private String name;

    private Long personNr;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getPersonNr() {
        return personNr;
    }

    public void setPersonNr(Long personNr) {
        this.personNr = personNr;
    }

}
于 2013-02-01T14:25:47.427 回答
2
ArrayList<String> customer = new ArrayList<String>();

通过这种方式,您定义了 arrayList只customer接受类型String

ArrayList<Person> customer = new ArrayList<Person>(); 

这将只接受具有Person类型(和 Person 的子类型)的对象。

于 2013-02-01T14:17:58.820 回答
1

定义一个类 Person

public class Person(){
    private String name;
    private long pNr;
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public long getPNR(){
        return pNr;
    }
    public void setPNR(long pNr){
        this.pNr = pNr;
    }
}

然后你使用:

ArrayList<Person> customer = new ArrayList<Person>();
于 2013-02-01T14:21:23.043 回答
1

或者,如果你坚持,那么在你的 Person 类中ArrayList<String> customer实现一个方法。toString()

@Override
public String toString() {
    return "Person[name=" + name + ",pNr=" + pNr +"]";
}

然后你可以使用:

customer.add(person.toString())
于 2013-02-01T14:18:10.187 回答
0

在这种情况下,您需要使用ArrayList<Person>

于 2013-02-01T14:16:15.380 回答
0

如果要将对象添加到数组列表中,则必须在列表类型中引用该对象。IE:ArrayList<Person> customer = new ArrayList<Person>();

于 2013-02-01T14:18:01.797 回答