如何重新安排HashMap?

时间:2013-10-14 17:23:53

标签: java hashmap treemap

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

3 个答案:

答案 0 :(得分:1)

您应该真正创建一个包含datename字段的课程。此外,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,因为对于不同年份的日期,天真的按字符串排序值将不起作用。