You can add custom classes inside a Map:
Usuario class
public class Usuario implements Serializable {
private String nombre;
private String ciudadOrigen;
private String paisOrigen;
private String idiomaMaterno;
private int edad;
public Usuario(String nombre, String ciudadOrigen, String paisOrigen, String idiomaMaterno, int edad) {
this.nombre = nombre;
this.ciudadOrigen = ciudadOrigen;
this.paisOrigen = paisOrigen;
this.idiomaMaterno = idiomaMaterno;
this.edad = edad;
}
public Usuario(String nombre, String paisOrigen, String idiomaMaterno) {
this.nombre = nombre;
this.paisOrigen = paisOrigen;
this.idiomaMaterno = idiomaMaterno;
}
public Usuario(String nombre, String ciudadOrigen, String paisOrigen, String idiomaMaterno) {
this.nombre = nombre;
this.ciudadOrigen = ciudadOrigen;
this.paisOrigen = paisOrigen;
this.idiomaMaterno = idiomaMaterno;
}
public String getIdiomaMaterno() {
return idiomaMaterno;
}
public void setIdiomaMaterno(String idiomaMaterno) {
this.idiomaMaterno = idiomaMaterno;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getCiudadOrigen() {
return ciudadOrigen;
}
public void setCiudadOrigen(String ciudadOrigen) {
this.ciudadOrigen = ciudadOrigen;
}
public String getPaisOrigen() {
return paisOrigen;
}
public void setPaisOrigen(String paisOrigen) {
this.paisOrigen = paisOrigen;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
Saludo class
public class Saludo implements Serializable {
private String saludo;
private String idioma;
public Saludo(String saludo, String idioma) {
this.saludo = saludo;
this.idioma = idioma;
}
public String getIdioma() {
return idioma;
}
public void setIdioma(String idioma) {
this.idioma = idioma;
}
public String getSaludo() {
return saludo;
}
public void setSaludo(String saludo) {
this.saludo = saludo;
}
}
Implementation
public class ModeloDatos implements Serializable {
private HashMap<Usuario, Saludo> usuariosSaludos = new HashMap<>();
public void ingresar (Usuario usuario, Saludo saludo) {
usuariosSaludos.put(usuario, saludo);
}
public String obtenerUsuarios () {
StringBuilder stringBuilder;
if (usuariosSaludos.isEmpty()) return "Lista vacía";
else {
stringBuilder = new StringBuilder("Lista de usuarios:\n");
for (Usuario usuario : usuariosSaludos.keySet())
stringBuilder.append(usuario.getNombre()).
append(" de ").
append(usuario.getPaisOrigen()).
append(".\n");
}
return stringBuilder.toString();
}
public String obtenerSaludos () {
StringBuilder stringBuilder;
if (usuariosSaludos.isEmpty()) return "Lista vacía";
else {
stringBuilder = new StringBuilder("Lista de saludos:\n");
for (Saludo saludo : usuariosSaludos.values())
stringBuilder.append("Se dice ").
append(saludo.getSaludo()).
append(" en ").
append(saludo.getIdioma()).
append(".\n");
}
return stringBuilder.toString();
}
public String obtenerResultados() {
StringBuilder stringBuilder;
if (usuariosSaludos.isEmpty()) return "Lista vacía";
else {
stringBuilder = new StringBuilder("Resultados:\n\n");
for (Usuario usuario : usuariosSaludos.keySet()) {
Saludo s = usuariosSaludos.get(usuario);
stringBuilder.append(usuario.getNombre()).
append(" de ").
append(usuario.getPaisOrigen()).
append(".\n").
append("Nos dice ").
append(s.getSaludo()).
append("en ").
append(s.getIdioma()).append("\n\n");
}
}
return stringBuilder.toString();
}
}
Where:
ingresar adds an entry to the map using put method.
obtenerUsuarios iterates over the map's keys using keySet method.
obtenerSaludos iterates over the map's values using values method.
obtenerResultados is a combination of both methods.