从类的arraylist中获取变量的arraylist

时间:2013-12-07 04:08:46

标签: java arraylist

我有一个类人物的arraylist

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

在Person类中,我有一些与该人相关的变量。

public class Person {
    String Name;
    String Address;
    String Phonenumber;
}

现在是否有一种方法可以让人们使用arraylist来获得名字的arraylist?

3 个答案:

答案 0 :(得分:3)

你必须迭代它。

List<String> names = new ArrayList<>();

for(Person person : people) {
   names.add(person.getName()); // Assuming you have a getter
}

答案 1 :(得分:0)

  

现在有一种方法可以让人们使用arraylist来获得一个arraylist   名称?

即可。将名称arraylist定义为ArrayList<String>。比,迭代ArraList<Person>并将值放在名称arraylist上。

List<String> nameList = new ArrayList<>();

for(Person person : people) {
   nameList.add(person.getName());
}

答案 2 :(得分:0)

如果你真的想要维护一对ArrayLists,一个包含Person个对象,另一个包含person对象的Name属性,你总是可以创建另一个类:

public class PersonList {
    private ArrayList<Person> people;
    private ArrayList<String> names;

    public PersonList() {
        people = new ArrayList<>();
        names = new ArrayList<>();
    }

    public PersonList(ArrayList<Person> p) {
        people = p;
        names = new ArrayList<>();
        for(Person person : p) {
            names.add(p.getName());
        }
    }

    public ArrayList<Person> getPeople() {
        return people;
    }

    public ArrayList<String> getNames() {
        return names;
    }

    public void add(Person p) {
        people.add(p);
        names.add(p.getName());
    }

    public Person getPerson(int index) {
        return people.get(index);
    }

    public String getName(int index) {
        return names.get(index);
    }

    // more methods to continue to replicate the properties of ArrayList...
    // just depends what you need
}

您必须继续向此类添加方法,以便此类可以执行您在单个ArrayList上可以执行的所有操作。实际上,这个类只是一种方便的方法,可以让它更容易同时维护两个不同的ArrayLists

无论如何,现在在主代码中,您可以实例化PersonList的对象而不是数组列表:

PersonList people = new PersonList();

并添加到people。或者您甚至可以使用常规数组列表,直到您需要名称列表,并使用我提供的其他构造函数实例化PersonList

// Assuming ArrayList<People> arrPeople exists...
PersonList people = new PersonList(arrPeople);

现在people对象将包含与ArrayList相同的arrPeople,以及包含所有名称的匹配names列表。无论您如何实例化PersonList,在add上调用PersonList方法(如果正确设置此类,则与ArrayList的语法相同),它将会保留类管理的两个数组列表同步。