我正在创建一个程序,我必须为大学建立一个数据库。我使用地图来保存数据,我需要按属性过程对其进行排序,以显示主题的名称和代码,但我不知道该怎么做。非常感谢!
public class Student {
private String apellido = "";
private String nombre = "";
private String correo = "";
private String dni = "";
public Student(String lastname, String name, String mail, String id)
{
this.lastname = lastname;
this.name = name;
this.mail = mail;
this.id = id;
}
}
public class Subject {
private String name = "";
private int code
private int course;
public Subject(String name, int code, int course) {
this.name = name;
this.code = code;
this.course = course;
}
public String getName() {
return name;
}
public int getCode() {
return code;
}
public int getCourse() {
return course;
}
}
public class Model {
private Map<Subject, List<Student>> map = new HashMap<>();
public void orderByCourse() {
System.out.printf("%-20s %-6s\n", "subject", "code");
List<String> list = new ArrayList<String>();
for (Entry<Subject, List<Student>> element : map.entrySet()){
Subject key = element.getKey();
List<Student> value = element.getValue();
System.out.printf("%-20s %-6s\n", key.getName(), key.getCode());
}
}
答案 0 :(得分:0)
从技术上讲,您无法对Map
进行排序。 Map
中的键和值的顺序/顺序由Map
实现控制。
您可以做的是获取地图的键集,值集或条目集的副本,然后对该副本进行排序。但是,请务必注意,这不会影响原始地图条目的顺序。
所以你的问题实际上归结为两个子问题:
问题:如何复制相应的设置?
回答:使用ArrayList(Collection)
复制构造函数。
问题:如何根据列表元素类的属性对数组列表进行排序?
回答:为元素类创建一个Comparator
对象,该对象根据所需属性的值对一对元素实例进行排序。另请参阅Sort ArrayList of custom Objects by property。