如何重新安排HashMap?我想知道是否可以按日期订购。
ArrayList<HashMap<String, String>> newsliste;
HashMap<String, String> map = new HashMap<String, String>();
map.put("date", "01-10-2001");
map.put("name", "yoan");
newsliste.add(map);
HashMap<String, String> map1 = new HashMap<String, String>();
map.put("date", "11-5-2001");
map.put("name", "Rom");
newsliste.add(map1);
HashMap<String, String> map2 = new HashMap<String, String>();
map.put("date", "01-05-2003");
map.put("name", "Nico");
newsliste.add(map2);
HashMap<String, String> map3 = new HashMap<String, String>();
map.put("date", "13-10-2001");
map.put("name", "moup");
newsliste.add(map3);
答案 0 :(得分:1)
您应该真正创建一个包含date
和name
字段的课程。此外,date
字段应为java.util.Date
而非String
。
话虽如此,您可以使用Collections.sort(list, comparator)
对列表进行排序:
final DateFormat dateFormat = new SimpleDateFormat("dd-M-yyyy");
Collections.sort(newsList, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> left, Map<String, String> right) {
return dateFormat.parse(left.get("date")).compareTo(dateFormat.parse(right.get("date")));
}
});
答案 1 :(得分:0)
我想说实现你想要的最简单的方法就是简单的
map.put("01-10-2001", "yoan");
通过这种方式,您可以根据使用
输入的内容查找个人生日map.keySet();
命令。然后你可以找到生日钥匙,或者其他什么。
如果您要查找多个值,这可能不是最好的迭代。
如果你是,你可能想要使用日期和集合的散列图作为值...如果你真的想要一个散列图。
然后您可以使用更动态的存储桶,其中日期可以提取一组名称,您可以存储任何内容。
希望有所帮助。
答案 2 :(得分:0)
不确定。写一个Comparator<Map<String,String>>
,根据需要对列表进行排序,并使用Collections.sort(newsliste, new MyComparator())
对其进行排序。您可能希望解析日期并将Date对象或类似对象放入Map
,因为对于不同年份的日期,天真的按字符串排序值将不起作用。