Skip to content

Instantly share code, notes, and snippets.

@tiagox
Last active May 11, 2018 14:25
Show Gist options
  • Save tiagox/2a86b3be5be098ad320ab485ce73e5a5 to your computer and use it in GitHub Desktop.
Save tiagox/2a86b3be5be098ad320ab485ce73e5a5 to your computer and use it in GitHub Desktop.

Se recibe una lista de deportistas premiados con indicación de campeonato y año del premio. Como resultado se debe devolver una lista ordenada por año y para cada año todos los deportistas premiados y el campeonato ganado. Por ejemplo, si la lista que se recibe es:

[("Gabriela Sabatini", 1990, "Individual F US Open"), ("Gabriela Sabatini", 1988, "Dobles F US Open"), ("Steffi Graf", 1988, "Dobles F US Open"), ("Gabriela Sabatini", 1991, "Dobles F Wimbledon"), ("Steffi Graf", 1991, "Dobles F Wimbledon")]

el resultado debe ser:

[(1988, [("Steffi Graf", "Dobles F US Open"), ("Gabriela Sabatini", "Dobles F US Open")]), (1990, [("Gabriela Sabatini", "Individual F US Open")]), (1991, [("Steffi Graf", "Wimbledon"), ("Gabriela Sabatini", "Dobles F Wimbledon")])]

Escribir un método para resolver el ejercicio donde se utilicen las estructuras estudiadas en clase (Pila, Cola, Lista, Conjunto (HashSet o TreeSet) y/o Diccionario (HashMap o TreeMap)).

import java.util.LinkedList;
import java.util.List;
import java.util.TreeMap;
public class App {
public static void main(String[] args) {
List<Premio> listado = new LinkedList<Premio>();
listado.add(new Premio("Gabriela Sabatini", 1990, "Individual F US Open"));
listado.add(new Premio("Gabriela Sabatini", 1988, "Dobles F US Open"));
listado.add(new Premio("Steffi Graf", 1988, "Dobles F US Open"));
listado.add(new Premio("Gabriela Sabatini", 1991, "Dobles F Wimbledon"));
listado.add(new Premio("Steffi Graf", 1991, "Dobles F Wimbledon"));
ProcesadorDePremios procesador = new ProcesadorDePremios();
TreeMap<Integer, List<DeportistaPremiado>> resultado = procesador.procesar(listado);
System.out.println(listado);
System.out.println(resultado);
}
}
class class DeportistaPremiado {
String nombre;
String campeonato;
public DeportistaPremiado(String nombre, String campeonato) {
this.nombre = nombre;
this.campeonato = campeonato;
}
@Override
public String toString() {
return "(\"" + nombre + "\", \"" + campeonato + "\")";
}
} {
String nombre;
String campeonato;
public DeportistaPremiado(String nombre, String campeonato) {
this.nombre = nombre;
this.campeonato = campeonato;
}
@Override
public String toString() {
return "(\"" + nombre + "\", \"" + campeonato + "\")";
}
}
public class Premio {
String nombre;
Integer año;
String campeonato;
public Premio(String nombre, Integer año, String campeonato) {
this.nombre = nombre;
this.año = año;
this.campeonato = campeonato;
}
public DeportistaPremiado comoDeportistaPremiado() {
return new DeportistaPremiado(nombre, campeonato);
}
@Override
public String toString() {
return "(\"" + nombre + "\", " + año + ", \"" + campeonato + "\")";
}
}
import java.util.LinkedList;
import java.util.List;
import java.util.TreeMap;
public class ProcesadorDePremios {
public TreeMap<Integer, List<DeportistaPremiado>> procesar(List<Premio> listado) {
TreeMap<Integer, List<DeportistaPremiado>> resultado = new TreeMap<Integer, List<DeportistaPremiado>>();
for (Premio premio : listado) {
if (!resultado.containsKey(premio.año)) {
resultado.put(premio.año, new LinkedList<DeportistaPremiado>());
}
resultado.get(premio.año).add(premio.comoDeportistaPremiado());
}
return resultado;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment