Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对hashmap的ArrayList的数据进行排序<;字符串,字符串>;根据日期_Java_Sorting_Arraylist_Hashmap - Fatal编程技术网

Java 如何对hashmap的ArrayList的数据进行排序<;字符串,字符串>;根据日期

Java 如何对hashmap的ArrayList的数据进行排序<;字符串,字符串>;根据日期,java,sorting,arraylist,hashmap,Java,Sorting,Arraylist,Hashmap,我已根据姓名对数据进行了排序。但是,当我要根据“日期”对哈希映射的arraylist的数据进行排序时,我不知道如何解决它。下面给出了我按名称排序的方法 protected ArrayList<HashMap<String, String>> setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) { Collections.sort(menuItems2, new

我已根据姓名对数据进行了排序。但是,当我要根据“日期”对哈希映射的arraylist的数据进行排序时,我不知道如何解决它。下面给出了我按名称排序的方法

protected ArrayList<HashMap<String, String>> setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) {

    Collections.sort(menuItems2, new Comparator<HashMap<String, String>>() {
        public int compare(HashMap<String, String> mapping1,
                HashMap<String, String> mapping2) {
            return mapping1.get(KEY_NAME).compareTo(mapping2.get(KEY_NAME));
        }
    });

    return menuItems2;
}   
受保护的ArrayList setListOrderByName(ArrayList menuItems2){
Collections.sort(menuItems2,新的Comparator(){
公共整数比较(HashMap映射1,
HashMap映射(2){
返回mapping1.get(KEY_NAME).compareTo(mapping2.get(KEY_NAME));
}
});
返回菜单项2;
}   

我已经收到了来自xml解析的数据。我们可以从中获取字符串格式的名称、日期、时间等

将字符串转换为日期,然后进行比较

  protected ArrayList<HashMap<String, String>>      
setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) {

Collections.sort(menuItems2, new Comparator<HashMap<String, String>>() {
DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");//do determ    

@Override
public int compare(HashMap<String, String> mapping1,
    HashMap<String, String> mapping2) {
try {
    return f.parse(mapping1.get(KEY_NAME)).compareTo(f.parse(mapping2.get(KEY_NAME)));
} catch (ParseException e) {
    throw new IllegalArgumentException(e);
}
}
});
return menuItem2;
}
protectedarraylist
setListOrderByName(ArrayList菜单项S2){
Collections.sort(menuItems2,新的Comparator(){
DateFormat f=new SimpleDateFormat(“dd/MM/yyyy'@'hh:MM a”);//确定
@凌驾
公共整数比较(HashMap映射1,
HashMap映射(2){
试一试{
返回f.parse(mapping1.get(KEY_NAME)).compareTo(f.parse(mapping2.get(KEY_NAME)));
}捕获(解析异常){
抛出新的IllegalArgumentException(e);
}
}
});
返回菜单项2;
}

这里是基于字符串日期的排序HashMap示例

    protected ArrayList<HashMap<String, String>> setListOrderByName(ArrayList<HashMap<String, String>> menuItems2) {

        Collections.sort(menuItems2, new Comparator<HashMap<String, String>>() {
            public int compare(HashMap<String, String> mapping1,
                    HashMap<String, String> mapping2) {

                DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
                Date date1 = formatter.parse(mapping1.get(DATE));


                DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
                Date date2 = formatter.parse(mapping2.get(DATE));

                if(date1.after(date2)){
              return mapping1.get(DATE);
                }else{
                  return mapping2.get(DATE);
                }                           
            }
        });

        return menuItems2;
    } 
受保护的ArrayList setListOrderByName(ArrayList menuItems2){
Collections.sort(menuItems2,新的Comparator(){
公共整数比较(HashMap映射1,
HashMap映射(2){
DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ssz”);
DateDate1=formatter.parse(mapping1.get(Date));
DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ssz”);
DateDate2=formatter.parse(mapping2.get(Date));
如果(日期1.之后(日期2)){
返回mapping1.get(日期);
}否则{
返回mapping2.get(日期);
}                           
}
});
返回菜单项2;
} 

那里没有“日期”。。。只是一个
列表
映射
。您的日期是字符串格式的吗?如果它是以字符串形式存储的日期,最简单的方法是将字符串转换为日期,然后进行比较。@AmitChotaliya或将其存储为yyyyMMdd,以便按词汇进行排序。下面介绍如何比较日期和解析日期,这是一种非常特定的日期格式。您是如何确定的?@ElliottFrisch要确定字符串格式,请访问