Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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/2/csharp/277.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 如何使用字符串“对自定义对象的ListArray进行排序”;日期“;成员_Java_Sorting_Date_Arraylist - Fatal编程技术网

Java 如何使用字符串“对自定义对象的ListArray进行排序”;日期“;成员

Java 如何使用字符串“对自定义对象的ListArray进行排序”;日期“;成员,java,sorting,date,arraylist,Java,Sorting,Date,Arraylist,我有一个“计划”列表 问题是,我无序地接受了我的“tmpListPlanning” 我想把它们按日期分类。 日期的格式如下: "2013-12-10 14:00:00" 我在StackOverFlow上看到了这一点,但无法在自定义对象列表上使用: Collections.sort(datestring, new Comparator<String>() { DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:m

我有一个“计划”列表

问题是,我无序地接受了我的“tmpListPlanning”

我想把它们按日期分类。 日期的格式如下:

"2013-12-10 14:00:00"
我在StackOverFlow上看到了这一点,但无法在自定义对象列表上使用:

Collections.sort(datestring, new Comparator<String>() {
        DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
        @Override
        public int compare(String o1, String o2) {
            try {
                return f.parse(o1).compareTo(f.parse(o2));
            } catch (ParseException e) {
                throw new IllegalArgumentException(e);
            }
        }
    });
Collections.sort(日期字符串,新的比较器(){
DateFormat f=新的简化格式(“dd/MM/yyyy'@'hh:MM a”);
@凌驾
公共整数比较(字符串o1、字符串o2){
试一试{
返回f.parse(o1).compareTo(f.parse(o2));
}捕获(解析异常){
抛出新的IllegalArgumentException(e);
}
}
});
你能帮我吗? 谢谢

Edit1:

Collections.sort(tmpListPlanning, new Comparator<Planning>() {
            DateFormat f = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
            @Override
            public int compare(Planningo1, Planning o2) {
                String date1 = o1.getStart();
                String date2 = o2.getStart();
                try {
                    Log.e("Debug", "RETURN");
                    return f.parse(date1).compareTo(f.parse(date2));
                } catch (ParseException e) {
                    Log.e("Debug", "Parse Exception");
                    throw new IllegalArgumentException(e);
                } catch (java.text.ParseException e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
Collections.sort(tmpListPlanning,newcomparator(){
DateFormat f=新的简化格式(“yyyy/MM/dd hh:MM:ss”);
@凌驾
公共整数比较(规划1、规划2){
字符串date1=o1.getStart();
字符串date2=o2.getStart();
试一试{
Log.e(“调试”、“返回”);
返回f.parse(date1).compareTo(f.parse(date2));
}捕获(解析异常){
Log.e(“调试”、“解析异常”);
抛出新的IllegalArgumentException(e);
}catch(java.text.parsee){
e、 printStackTrace();
}
返回0;
}
});

您使用计划列表,因此希望比较所有计划。 您需要一个计划比较器,要比较两个计划,您需要使用它们的开始日期

您可以尝试以下方法:

Collections.sort(datestring, new Comparator<Planning>() {
        DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
        @Override
        public int compare(Planning o1, Planning o2) {
            Date date1 = o1.getStart();
            Date date2 = o2.getStart();
            try {
                return f.parse(date1).compareTo(f.parse(date2));
            } catch (ParseException e) {
                throw new IllegalArgumentException(e);
            }
        }
    });
Collections.sort(日期字符串,新的比较器(){
DateFormat f=新的简化格式(“dd/MM/yyyy'@'hh:MM a”);
@凌驾
公共整数比较(规划o1、规划o2){
Date date1=o1.getStart();
Date date2=o2.getStart();
试一试{
返回f.parse(date1).compareTo(f.parse(date2));
}捕获(解析异常){
抛出新的IllegalArgumentException(e);
}
}
});

“我不能让它工作”你怎么不能让它工作?您需要一个
比较器
而不是
比较器
。我认为该格式与您的计划列表的格式不匹配。为什么要解析该日期-时间字符串?当按字母顺序排序时,这种格式(类似于ISO8601)碰巧也是按时间顺序排序的。无需解析。我编辑了我的原始帖子(我做了一些调整):它每次都会通过“return f.parse(date1)。compareTo(f.parse(date2));”,但它不会修改我的tmpListPlanning。“我忘了什么吗?”马林·内尔。我的坏消息,date1和date2不是字符串,而是Date对象。它不起作用,它不会修改我的列表。你知道为什么吗?你确定不会抛出异常吗?因为对我来说,这段代码非常有效。请检查日期格式。您将日期使用为这种格式“2013-12-10 14:00:00”,并尝试将其解析为“10/12/2013 14:00:00”,因此它不起作用!!
Collections.sort(tmpListPlanning, new Comparator<Planning>() {
            DateFormat f = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
            @Override
            public int compare(Planningo1, Planning o2) {
                String date1 = o1.getStart();
                String date2 = o2.getStart();
                try {
                    Log.e("Debug", "RETURN");
                    return f.parse(date1).compareTo(f.parse(date2));
                } catch (ParseException e) {
                    Log.e("Debug", "Parse Exception");
                    throw new IllegalArgumentException(e);
                } catch (java.text.ParseException e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
Collections.sort(datestring, new Comparator<Planning>() {
        DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
        @Override
        public int compare(Planning o1, Planning o2) {
            Date date1 = o1.getStart();
            Date date2 = o2.getStart();
            try {
                return f.parse(date1).compareTo(f.parse(date2));
            } catch (ParseException e) {
                throw new IllegalArgumentException(e);
            }
        }
    });