我正在尝试制作一个项目,我遇到了以下问题:该项目与学生有关。 Student类包含3个字段id,name,grade。我必须使用linkedHashMap来表示学生集合,id是关键。 我试过这个,但我不确定是否正确,因为这个名字是一个字符串而且等级为int。
Map<Integer,ArrayList> myMap = new LinkedHashMap<Integer,ArrayList>();
你能告诉我一些如何代表这个系列的想法吗?我需要能够添加/删除学生。
答案 0 :(得分:1)
为什么不从整数映射到学生?
Map<Integer,Student> myMap = new LinkedHashMap<Integer,Student>();
通过
添加学生myMap.put(student.id(), student);
链接的哈希映射保留了插入顺序。 TreeMap会让学生按ID排序;当没有特定的顺序时,普通的HashMap避免了与LinkedHashMap相比的一些开销。
答案 1 :(得分:0)
您可以在第一个内容中添加另一个LinkedHashMap
。
您的声明如下:
Map<Integer, LinkedHashMap> my Map = new LinkedHashMap<Integer, LinkedHashMap>();
或者您可以使用TreeMap。
然后您可以使用put
,get
和remove
方法。请注意,您还可以使用keySet
和values
进行迭代甚至containsKey
。
答案 2 :(得分:0)
您可以在Map
:
Usuario
课程
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
课程
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;
}
}
<强>实施强>
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();
}
}
其中:
ingresar
使用put
方法向地图添加条目。obtenerUsuarios
使用keySet
方法迭代地图的密钥。obtenerSaludos
使用values
方法迭代地图的值。obtenerResultados
是两种方法的组合。