Java 无法在一周中的几天进行排序

Java 无法在一周中的几天进行排序,java,date,Java,Date,我试图根据周天数对一些数据进行排序。我面临的问题是,我得到以下输出:- 周四、周五、周六、周日、周一、周二、周三 在我期待的时候 星期天,星期一,星期二,星期三 这是我正在使用的代码 public class DateComperator implements Comparator<Map<String,String>> { public String sortingView; public String sortType; public Da

我试图根据周天数对一些数据进行排序。我面临的问题是,我得到以下输出:- 周四、周五、周六、周日、周一、周二、周三

在我期待的时候 星期天,星期一,星期二,星期三

这是我正在使用的代码

public class DateComperator implements Comparator<Map<String,String>> {

    public String sortingView;
    public String sortType;

    public DateComperator(String sortingView,String sortType){
        this.sortingView=sortingView;
        this.sortType=sortType;
    }

    @Override
    public int compare(
        Map<String,String> o1, Map<String,String> o2) {
         Date date1 = null,date2 = null;

          String[] formats = {
              "MMM-yyyy",   "MMM-yyyy",

                "MM-dd-yyyy",     "MM-dd-yyyy",
                "MMM-d-yyyy",     "MMM-d-yyyy",
                "MM/dd/yyyy", "MM/dd/yyyy",
                "MMM/d/yyyy", "MMM/d/yyyy",
                "MMM-yy",   "MMM-yy",
                "MMMM",     "MMMM",
                "EEEE",     "EEEE",
                "yyyy",        "yyyy",
          };
         String format="";
for (String parse : formats) {
                SimpleDateFormat sdf = new SimpleDateFormat(parse);
        try {
                    sdf.parse(o1.get(sortingView).replaceAll(" ",""));
                    format=parse;
//                    System.out.println("Printing the value of " + parse);
                    break;
                } catch (ParseException e) {

                }
            }
 SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            if(sortingView.equalsIgnoreCase("month")){
             date1 = sdf
                    .parse(o1.get(sortingView).replaceAll(" ",""));
            date2 = sdf
                    .parse(o2.get(sortingView).replaceAll(" ",""));
            }else{
            date1 = sdf
                    .parse(o1.get(sortingView).replaceAll(" ",""));
            date2 = sdf
                    .parse(o2.get(sortingView).replaceAll(" ",""));
        }

        } catch (ParseException ex) {
            Logger.getLogger(DateComperator.class.getName()).log(Level.SEVERE, null, ex);
        }

        int i=date1.compareTo(date2);
        if(sortType.equalsIgnoreCase("desc")){
            return -i;
        }else{
            return i;
        }
    }
}
公共类DateComperator实现Comparator{
公共字符串排序视图;
公共字符串排序类型;
public DateComperator(字符串排序视图、字符串排序类型){
this.sortingView=sortingView;
this.sortType=sortType;
}
@凌驾
公共整数比较(
地图o1,地图o2){
Date date1=null,date2=null;
字符串[]格式={
“MM yyyy”,“MM yyyy”,
“MM dd yyyy”、“MM dd yyyy”,
“MMM-d-yyyy”、“MMM-d-yyy”,
“MM/dd/yyyy”、“MM/dd/yyyy”,
“MMM/d/yyyy”、“MMM/d/yyy”,
“MMM-yy”,“MMM-yy”,
“嗯”,“嗯”,
“EEEE”,“EEEE”,
“yyy”,“yyy”,
};
字符串格式=”;
for(字符串解析:格式){
SimpleDataFormat sdf=新的SimpleDataFormat(解析);
试一试{
parse(o1.get(sortingView.replaceAll(“,”);
格式=解析;
//System.out.println(“打印“+parse”的值);
打破
}捕获(解析异常){
}
}
SimpleDataFormat sdf=新的SimpleDataFormat(格式);
试一试{
if(sortingView.equalsIgnoreCase(“月”)){
日期1=sdf
.parse(o1.get(sortingView).replaceAll(“,”);
日期2=sdf
.parse(o2.get(sortingView.replaceAll(“,”);
}否则{
日期1=sdf
.parse(o1.get(sortingView).replaceAll(“,”);
日期2=sdf
.parse(o2.get(sortingView.replaceAll(“,”);
}
}捕获(解析异常){
Logger.getLogger(DateComperator.class.getName()).log(Level.SEVERE,null,ex);
}
int i=日期1。与(日期2)相比;
if(sortType.equalsIgnoreCase(“描述”)){
返回-i;
}否则{
返回i;
}
}
}
这可能是由于使用EEEE格式解析日期对象的值造成的。它使用了一些默认日期,比如周一的周一1月05日00:00:00等等。我对这个很陌生。
任何帮助都将不胜感激。

您如何运行上述内容?这是我产品代码的一部分,我无法给您直接运行的代码。很抱歉,我对此无能为力。您是因为被告知/想实现自己的日期方法而实现自己的日期方法,还是因为不知道Java日期库就不使用它们?为什么
DateComperator实现Comparator
而不是
DateComparator实现Comparator
?我和下一个Elliott一样喜欢e,但人们可能对e的元音太熟悉了。@ElliottFrisch,因为我们使用自己的自定义比较器和Collections.sort,其中我们传递两个参数,第一个是包含星期的字符串映射,第二个是日期比较器的对象。