Efficacité avec laquelle nous pouvons obtenir la sortie souhaitée dans la liste en java?

cendres:
CircuitID   Department  Hours

--------------------------------

Circuit A   Electricity      60

Circuit A   Hydel            70

Circuit B   Hydel            30

Circuit C   Electricity      40

Circuit B   Electricity      80

Circuit C   Hydel            50

Circuit A   Electricity      70

Maintenant, je dois créer une liste qui aura des dossiers sur les critères suivants:

  1. Dans chaque identifiant de circuit que je dois obtenir le record avec plus des heures, mais si les heures en double sont présentes que je dois prendre celui avec le service d'électricité.

Résultat pour le résultat ci-dessus devrait être comme ci-dessous:

Circuit A  Electricity   70

Circuit B  Electricity   80

Circuit C  Hydel          50

Permettez-moi de savoir comment je peux itérer efficacement et plus moyen efficace pour obtenir la liste finale à l'aide java 8 / java.

Le code i écrit est pas du tout fonctionne parfaitement et mon approch a été montré ci-dessous:

for (int i = 0; i < circuitList.size(); i++) {

  for (int j = 0; j < circuitList.size(); {
    if (circuitList.get(i).getCircuitId().equals(circuitList.get(j).getCircuitId()) && i != j) {



     if (circuitList().get(i).getHours() == circuitList().get(j).getHours()) {



      if (circuitList().get(i).getDepartment().equals(“Electricity”) {



        newList.add(circuitList().get(i));

        }

        // some more conditions on getHours

classe circuit est d'avoir des objets POJO avec setters getter de ces trois objets.

 public class Circuit {

        String circuitID;
        int hours;
        String department;
}
Sero:
public static Map<String, Circuit> getMaxHours(final List<Circuit> circuitsList) {
    final Map<String, Circuit> mappedCircuitsById = new HashMap<String, Circuit>();

    for (final Circuit circuit : circuitsList) {
        if (!mappedCircuitsById.containsKey(circuit.getCircuitID())) {
            mappedCircuitsById.put(circuit.getCircuitID(), circuit);
        } else {
            final Circuit existingMax = mappedCircuitsById.get(circuit.getCircuitID());
            if (circuit.getHours() > existingMax.getHours()) mappedCircuitsById.put(circuit.getCircuitID(), circuit);
            else if (circuit.getHours() == existingMax.getHours()) {
                if (circuit.getDepartment().equals("Electricity")) mappedCircuitsById.put(circuit.getCircuitID(), circuit);
                else if (existingMax.getDepartment().equals("Electricity")) mappedCircuitsById.put(circuit.getCircuitID(), existingMax);
            }
        }
    }

    return mappedCircuitsById;
}

Créer une carte où la clé de la carte est circuitIDet la valeur est l' Circuitobjet qui répond aux exigences « heures max ». Itérer sur les éléments de la liste et mettre à jour la carte en conséquence pour stocker les nouvelles « heures max » Circuitobjet

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=197429&siteId=1
conseillé
Classement