POO-ITBA / 2024_02

Consultas 2C 2024
2 stars 0 forks source link

Recu2doParc 20241Q - Ejer2 #33

Open pedrogonzaleznunez opened 1 day ago

pedrogonzaleznunez commented 1 day ago

Buenas, tenia una duda respecto a la estructura. Mi pregunta es si esta bien la estructura, es decir, si tendría alguna penalización. Estoy teniendo en cuenta que mi clase Charge implementa Comparable, con el orden conologico de las fechas. Aclaración: esta clase Charge me estoy guardando unicamente las fechas y sus respectivos cargadores. Muchas gracias.

  1. En la solución plantea lo siguiente:

class EVCentral

   ...
   private final Map<String, Double> balanceByName = new HashMap<>();
   private final Map<String, SortedMap<LocalDateTime, EVChargerType>> chargesByNameDate = new HashMap<>();
   ...

  1. Yo planteé lo siguiente:

class EVCentral

   ...
   private final Map<String, SortedSet<Charge>> chargesByName = new HashMap<>();
    private final Map<String, Double> balanceByName = new HashMap<>();
    ...
pedrogonzaleznunez commented 1 day ago

Cuando implemento el método charge(...) y tengo q validar si existe una fecha, ahi tendria un problema. Porq deberia recorrer parte del array. Es eso lo que "me dice" que tengo que usar mapa de mapas?

fmeola commented 1 day ago

Hola @pedrogonzaleznunez En el enunciado se indica

No se acepta registrar dos cargas para el mismo cliente en la misma fecha y hora.

Esto ya nos dice que una fecha y hora podría ser usada como clave de búsqueda.

Luego si vamos a ver el método charge verás que no es sólo agregar una carga y listo (lo que sería agregar un elemento en una colección) sino que como bien decís hay que encontrar si ya había una con esa misma fecha y hora y arrojar una excepción. En el caso de tu SortedSet implicaría un recorrido preguntando si la fecha y hora es la misma que estoy buscando mientras que con un mapa alcanza con un containsKey.

Así que con eso llegamos a que mapa de mapas es la mejor colección