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; } }