我有一个哈希图,它具有以下内容
{20/02/2012=20/02/2012, 16/02/2012=16/02/2012}
但这是作为字符串(键和值)存在的。
请帮助我如何根据月份和日期对它们进行排序,
ex : 16/02/2012=16/02/2012,20/02/2012=20/02/2012
我可以接受任何建议。
谢谢
您需要实现自定义比较器并将它们存储在TreeMap中。
例如(使用 joda-time):
class MyComparator implements Comparator<String> {
@Override
public int compare(String value1, String value2) {
LocalDate date1 = LocalDate.parse(value1, DateTimeFormat.forPattern("dd/MM/yyyy"));
LocalDate date2 = LocalDate.parse(value2, DateTimeFormat.forPattern("dd/MM/yyyy"));
return date1.compareTo(date2);
}
}
TreeMap<String, String> treeMap = new TreeMap<String,String>();
treeMap.put("20/02/2012", "20/02/2012");
treeMap.put("16/02/2012","16/02/2012");
System.out.println(treeMap);
但是你绝对应该在你的地图中存储日期而不是字符串,如果你不能改变它,使用上面的方法。
如果可能,将您的日期存储为 yyyy/MM/dd(例如 2012/02/16)并使用SortedSet。
正如大家所说,使用Date
有序集合中的对象将使这更容易。使用从您的字符串转换为日期
new SimpleDateFormat("dd/MM/yyyy").parse(input);
我只是补充一点,HashMaps 不保留顺序,HashMaps 使用键的哈希码将条目放入数组中,因此您无法将其与任何类型的排序算法一起使用,您应该使用它的位置TreeMap 或任何其他 Sortable Map 实现