使用TreeMap 代替HashMap,它会根据键的自然顺序自动排序。
要对ArrayList 进行排序,请使用静态Collections#sort(List, Comparator) 方法,指定一个比较器来对列表中的Events 对象进行排序。例如,假设您要按名为id 的Events 构造函数的第一个参数进行排序,那么您将调用sort,如下所示:
Map<String, List<Events>> h = new HashMap<>();
List<Events> a = new ArrayList<>();
a.add(new Events("1", "name1", "Address1"));
a.add(new Events("2", "name2", "Address2"));
Collections.sort(a, new Comparator<Events>() {
@Override
public int compare(Events o1, Events o2) {
return o1.getId().compareTo(o2.getId());
}
});
h.put("10-12-2014", a);
... // similarly for list a1
Collections.sort(a1, new Comparator<Events>() {
@Override
public int compare(Events o1, Events o2) {
return o1.getId().compareTo(o2.getId());
}
});
h.put("08-11-2014", a1);
请注意,最好将列表和映射变量声明到接口,而不是实现,即声明h 的类型为Map 而不是HashMap,而a 的类型为List。
或者,考虑将Events 元素放入TreeSet 而不是ArrayList,并让Events 类实现Comparable 接口:
class Events implements Comparable<Events> {
private String id;
...
@Override
public int compareTo(Events o) {
return this.getId().compareTo(o.getId());
}
}