POO-ITBA / 2023_02

0 stars 0 forks source link

Consulta expresiones lambda para Comparators. #17

Closed urielsv closed 12 months ago

urielsv commented 12 months ago

Hola! Como va?

Queria saber si es valido aplicar estas expresiones lambdas. Con valido me refiero a que este bien en todo sentido, estilo y funcionalidad.


1.

super(originAirport, new Comparator<Flight>() {
           @Override
           public int compare(Flight o1, Flight o2) {
               int cmp = Integer.compare(o1.getStops(), o2.getStops());
               if(cmp == 0) {
                   cmp = o1.compareTo(o2);
               }
               return cmp;
           }
       });

Equivalente? a:

super(origin, Comparator.comparing(Flight::getStops).thenComparing(Flight::compareTo));

2.

super(originAirport, new Comparator<Flight>() {
           @Override
           public int compare(Flight o1, Flight o2) {
               return o1.compareTo(o2);
           }
       });

Equivalente? a:

super(origin, (o1, o2) -> o1.compareTo(o2));

3.

super(originAirport, new Comparator<Flight>() {
           @Override
           public int compare(Flight o1, Flight o2) {
               int cmp = o2.getSeatCategory().compareTo(o1.getSeatCategory());
               if(cmp == 0) {
                   cmp = o1.compareTo(o2);
               }
               return cmp;
           }
       });

Equivalente? a:

super(origin, Comparator.comparing(Flight::getCategory).reversed().thenComparing(Flight::compareTo));

Resoluciones parciales extraidas de Sol_Rec_2_22_01

fmeola commented 12 months ago

Hola! Paso a responder cada ítem:

  1. El primer comparing debería ser comparingInt porque getStops retorna un builtin
  2. Perfecto
  3. Perfecto
urielsv commented 12 months ago

Genial, gracias!