es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Optimizar para encontrar objetos con el valor de campo más alto en una lista de arrays.

He creado una función que devuelve una lista de arrays con las personas que tienen el campo “number” más alto. Pero estoy bastante seguro/a de que esto se puede optimizar.

public ArrayList<membre> findOlder(){
    ArrayList<membre> olderPersonnes = new ArrayList<membre>();
    int higher = 0;
    for (Membre membre : membresDeLaFamille) {
        if (membre.getNumber() > higher) {
            higher = membre.getNumber();
        }
    }
    for (Membre membre: membresDeLaFamille) {
        if (membre.getNumber() == higher) {
            olderPersonnes.add(membre);
        }
    }
    return olderPersonnes;
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El código proporcionado itera dos veces sobre el arreglo membresDeLaFamille para determinar el valor más alto de number y luego agregar todas las personas con ese valor a un arreglo olderPersonnes. Esto se puede optimizar iterando el arreglo solo una vez y añadiendo a la lista de personas la que tenga el valor más alto, limpiándola si hay nuevos candidatos con un valor más alto.

    public ArrayList<membre> findOlder() {
        ArrayList<membre> olderPersonnes = new ArrayList<membre>();
        int highest = 0;
        for (Membre membre : membresDeLaFamille) {
            if (membre.getNumber() > highest) {
                olderPersonnes.clear(); // limpiar candidatos anteriores
                highest = membre.getNumber();
            }
            if (membre.getNumber() == highest) {
                olderPersonnes.add(membre); // añadir nuevo candidato o añadir a la lista limpiada
            }
        }
        return olderPersonnes;
    }
    

    Este enfoque considera que podría haber múltiples personas con el valor más alto de number y las agrega a la lista solo una vez. Al iterar solo una vez, se mejora el rendimiento general de la función.

Comments are closed.