如何将一个对象存储在ArrayList中?

6

我试图将一个 person 对象存储在 ArrayList 中。

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

'person' 对象有两个变量:name(字符串)和 pNr(长整型)。 我尝试简单地添加它:customer.add(person),但似乎不起作用。

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

我根本无法解决这个问题,甚至不知道是否可行。

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

9个回答

19

将您的List更改为接受Person对象而不是String

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

13

人类(Person)类

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();

3

您需要使用一个不同泛型类型的List。由于当前List指定的泛型类型是String,因此它只允许您将String类型的对象添加到列表中。

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

我建议使用List接口,以便在需要切换到不同实现(如LinkedList)时进行操作。


2
ArrayList也保留顺序。此外,任何实现List的内容都需要保留某种顺序。(例如PriorityQueue有不同的指定顺序方式) - JonathanC

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;
    }

}

2
ArrayList<String> customer = new ArrayList<String>();

通过这种方式,您定义了ArrayList customer 仅接受类型为String的数据。

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

这只接受 Person 类型的对象(以及 Person 的子类型)。


1

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

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

然后您可以使用:
customer.add(person.toString())

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;
    }
}

然后你使用a:
ArrayList<Person> customer = new ArrayList<Person>();

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

0
如果您想将一个对象添加到数组列表中,您需要在列表类型中引用该对象。例如:ArrayList<Person> customer = new ArrayList<Person>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接