我有一个Hashmap,其中包含以下内容
{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
我建议你没事。
由于
答案 0 :(得分:1)
您需要实现自定义比较器并将它们存储在 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);
但是你绝对应该在你的地图中存储日期而不是String,如果你不能改变它,使用上面的方法。
答案 1 :(得分:1)
如果可能,请将您的日期存储为yyyy / MM / dd(例如2012/02/16)并使用SortedSet。
答案 2 :(得分:1)
答案 3 :(得分:1)
正如大家所说,在排序集中使用Date
个对象会更容易。使用
new SimpleDateFormat("dd/MM/yyyy").parse(input);
答案 4 :(得分:1)
我只是补充说HashMaps没有保留顺序,HashMaps使用键的哈希码将条目放在一个数组中,这样你就不会使用任何类型的排序算法,你应该使用它取而代之的是TreeMap或任何其他可排序地图实现