-1

如何重新排列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);
4

3 回答 3

1

你真的应该创建一个带有dateandname字段的类。此外,该date字段应该是 ajava.util.Date而不是 a 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")));
    }
});
于 2013-10-14T17:43:21.157 回答
0

我想说实现您正在寻找的最简单的方法是

map.put("01-10-2001", "yoan"); 

这样,您可以根据输入的内容查找个人生日,使用

map.keySet();

命令。然后你可以找到生日钥匙,或者其他什么。

如果您正在寻找多个值,这可能不是最好的迭代。

如果你是你可能想要使用日期的哈希图和一个集合作为值......如果你真的想要一个哈希图。

然后您可以使用更动态的存储桶,其中日期可以提取一组名称,您可以在其中存储任何内容。

希望有帮助。

于 2013-10-14T17:33:50.973 回答
0

当然。编写一个Comparator<Map<String,String>>根据需要对列表进行排序的方法,并使用Collections.sort(newsliste, new MyComparator())它对其进行排序。您可能想要解析日期并将 Date 对象或类似对象放入您的Map中,因为天真的 sort-by-string-value 不适用于不同年份的日期。

于 2013-10-14T17:39:04.553 回答