gpt4 book ai didi

java - 对迄今为止的集合进行排序

转载 作者:行者123 更新时间:2023-12-02 07:54:30 25 4
gpt4 key购买 nike

我按如下方式对集合的日期进行排序,但在集合中,某些日期字段为空,并且排序不正确。

public class DateComparator implements Comparator<MyList>{
private static boolean isAscending;
private static final String TAG = "DateComparator";


public static boolean isAscending() {
return isAscending;
}


public static void setAscending(boolean isAscending) {
DateComparator.isAscending = isAscending;
}


@Override
public int compare(MyList lhs, MyList rhs) {
String pattern = "MM/dd/yyyy";
try {
String dueDateLHS = lhs.getDueDate();//some field are null
String dueDateRHS = rhs.getDueDate();//some field are null

if(dueDateLHS!=null && dueDateRHS!=null){
SimpleDateFormat dateFormatLHS = new SimpleDateFormat(pattern);
SimpleDateFormat dateFormatRHS = new SimpleDateFormat(pattern);
Date dateLHS = dateFormatLHS.parse(dueDateLHS);
Date dateRHS = dateFormatRHS.parse(dueDateRHS);
if(isAscending)
return dateLHS.compareTo(dateRHS);
else
return dateRHS.compareTo(dateLHS);
}
} catch (ParseException e) {
Log.e(TAG, ""+e.getMessage());
e.printStackTrace();
}
return -1;
}

}

我应该如何解决这个问题?

最佳答案

您没有处理一侧为空而另一侧不为空的情况。您需要添加类似以下内容:

else if(dueDateLHS == null && dueDateRHS!=null){
if(isAscending) {
return -1;
} else
return 1;
}
} else if (dueDateLHS != null && dueDateRHS==null){
//etc
} else if (dueDateLHS == null && dueDateRHS==null){
return 0;
}

关于java - 对迄今为止的集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com