WeightProgram
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class WeightProgram {
     
    private Map<String,List<Double>> weightLogs = new HashMap<String,List<Double>>();
     
    public WeightProgram () {
         
        initializeLogs(weightLogs);
    }
     
    public String biggestLooser() {
         
        String looserName = null;
        double highestLoss = Double.NEGATIVE_INFINITY;
         
        for (Map.Entry<String, List<Double>> entry : weightLogs.entrySet()) {
             
            List<Double> log = entry.getValue();
             
            double initialWeight = log.get(0);
            double currentWeight = log.get(log.size()-1);
             
            double prosentageWeightLoss = 100 - ((100/initialWeight)*currentWeight);
             
            if(prosentageWeightLoss > highestLoss) {
                looserName = entry.getKey();
                highestLoss = prosentageWeightLoss;
            }
        }
        return looserName;
    }
     
    private void initializeLogs(Map<String,List<Double>> map) {
    	List<Double> log1 = new ArrayList<Double>();
    	List<Double> log2 = new ArrayList<Double>();
    	List<Double> log3 = new ArrayList<Double>();
        
    	log1.add(95.0);
        log1.add(93.1);
        log1.add(87.9);
         
        log2.add(123.0);
        log2.add(119.1);
        log2.add(115.9);
         
        log3.add(102.0);
        log3.add(100.1);
        log3.add(98.3);

        weightLogs.put("OlaNor", log1);
        weightLogs.put("PerSpe", log2);
        weightLogs.put("EspAsk", log3);
    }
}

 

 

 









(8) Her brukes et HashMap til å organisere innveiingsloggene. HashMapet har
en String (deltakernavn) som nøkkel og en List som verdi. Deklarerer HashMapet som et Map, siden det ikke skal brukes noen HashMap-spesifikke metoder.
Merk at det egentlig ville vært mer naturlig med et personobjekt som nøkkel i Mapet

(12) Metode for å opprette lister og gjøre koden kjørbar, ikke eksplisitt en del av oppgaveteksten.



(20) Bruker metoden entrySet() som returnerer alle parene med nøkkel og verdi HashMapet har, og traverserer disse. 

(22) Henter deretter en og en log med getValue()-metoden.

(24) Henter element på plass 0 fra ArrayList.
(25) Henter siste element fra ArrayList, (størrelsen - 1) pga 0-indeksert.

 

 

 

(38) Med en ArrayList til å holde på innveiingene vil man enkelt kunne hente vekt etter uketall siden listen er 0-indeksert. Bruker double siden listen skal støtte desimaltall. Deklarerer ArrayListen som en List, siden det ikke skal brukes noen ArrayList-spesifikke metoder.

(42) Benytter List-metoden add, for å legge til elementer på slutten av listen

 

 

 


(54) Benytter Map-metoden put, for å mappe et nytt sett av nøkel og verdi.

 

 

 

  • No labels