Digamos que tengo una ArrayList de objetos. Por ejemplo: ArrayList<Person> personList, donde cada Person tiene 2 variables de clase String name y int age. Estas variables tienen sus propios métodos getter getName() y getAge().

¿Cuál es la forma más sencilla de recuperar una matriz (o ArrayList) de int ages[]?

Tenga en cuenta que esta pregunta es similar al titulado "Recuperar una matriz de valores asignados a un miembro de clase particular de una matriz de objetos en java", aunque sin la restricción arbitraria de for-loops, y usando una ArrayList en lugar de una Array.

3
Stevoisiak 28 abr. 2017 a las 23:59

3 respuestas

La mejor respuesta

Cree una matriz de destino del mismo tamaño que la lista, luego repita la lista y agregue age de cada elemento a la matriz de destino.

4
Lew Bloch 28 abr. 2017 a las 21:04

Numerosas formas de hacer esto: aquí hay una.

Primero obtenga las edades en una lista (usando una transmisión java8), y luego convierta la lista en una matriz.

public int[] getAges() {
    return personList.stream()
        .mapToInt(Person::getAge)
        .toArray();
}
3
Jorn Vernee 28 abr. 2017 a las 21:07
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;
}
2
Devendra Lattu 28 abr. 2017 a las 21:14