package com.trifulcas.colecciones;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
public class SolucionesColecciones {
public static void main(String[] args) {
HashMap<String, Integer> notas = new HashMap<>();
notas.put("JS", 5);
notas.put("c#", 8);
notas.put("Java", 9);
System.out.println(calculaMedia(notas));
System.out.println(100 / 3.0);
HashMap<String, ArrayList<Integer>> productos = new HashMap<>();
productos.put("Tuerca", new ArrayList<>());
productos.get("Tuerca").add(1);
productos.get("Tuerca").add(2);
productos.get("Tuerca").add(3);
productos.put("Tornillo", new ArrayList<>(Arrays.asList(2, 3, 4)));
productos.put("Arandela", new ArrayList<>(Arrays.asList(4, 5, 6)));
System.out.println(productos);
System.out.println(precioMinimo(productos));
}
static double calculaMedia(HashMap<String, Integer> notas) {
double suma = 0;
// Recorro los valores que es lo que me hace falta
for (int nota : notas.values()) {
suma += nota;
}
// Redondear a dos decimales OJO cuando en java dividimos dos enteros nos hace
// la división entera
// Por lo tanto quita los decimales. Si queremos conservarlos ponemos .0
return Math.round((suma / notas.size()) * 100) / 100.0;
}
// Ojo con los parámetros de entrada y salida
static HashMap<String, Integer> precioMinimo(HashMap<String, ArrayList<Integer>> productos) {
HashMap<String, Integer> res = new HashMap<String, Integer>();
// Recorro el hashmap
for (String producto : productos.keySet()) {
// Añado la clave la misma y el valor aprovecho el min de collections
res.put(producto, Collections.min(productos.get(producto)));
// Si no me acuerdo del collections me creo yo la función
res.put(producto, minimoValor(productos.get(producto)));
}
return res;
}
// No hace falta pero bueno...
static int minimoValor(ArrayList<Integer> numeros) {
int minimo = numeros.get(0);
for (int numero : numeros) {
if (numero < minimo) {
minimo = numero;
}
}
return minimo;
}
}