假设我有一个对象的ArrayList。例如:ArrayList<Person> personList
,其中每个Person
都有2个类变量String name
和int age
。这些变量每个都有自己的getter方法getName()
和getAge()
。
检索int ages[]
的数组(或ArrayList)的最简单方法是什么?
请注意,此问题类似于详细标题为“Retrieve an array of values assigned to a particular class member from an array of objects in java”,但没有对for循环的任意限制,并且使用ArrayList而不是Array。
答案 0 :(得分:4)
创建一个与列表大小相同的目标数组,然后遍历列表并将每个元素的age
添加到目标数组。
答案 1 :(得分:3)
无数种方法 - 这是一个。
首先将年龄输入列表(使用java8流),然后将列表转换为数组。
public int[] getAges() {
return personList.stream()
.mapToInt(Person::getAge)
.toArray();
}
答案 2 :(得分:2)
Person P1 = new Person("Dev", 25);
Person P2 = new Person("Andy", 12);
Person P3 = new Person("Mark", 20);
Person P4 = new Person("Jon", 33);
ArrayList<Person> personList = new ArrayList<>(Arrays.asList(new Person[] { P1, P2, P3, P4 }));
int[] ages = getPersonAges(personList); // [25, 12, 20, 33]
private static int[] getPersonAges(ArrayList<Person> personList) {
int[] ages = new int[personList.size()];
int idx = 0;
for (Person P : personList) { // Iterate through the personList
int age = P.getAge();
ages[idx++] = age;
}
return ages;
}