我在arraylist日期升序中使用以下代码,它的工作正常。但我需要修改该代码,以便从arraylist中获取开始日期和结束日期之间的数据。
我如何根据我的要求修改它?
升序订单代码(正常工作)
Collections.sort(adapter.modelValues, new Comparator<Actors>() {
@Override
public int compare(Actors lhs, Actors rhs) {
Date d1 = null, d2 = null;
try {
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
String a = lhs.getlastaction();
String b = rhs.getlastaction();
d1 = f.parse(a);
d2 = f.parse(b);
} catch (Exception e) {
Toast.makeText(getActivity().getApplicationContext(), String.valueOf(e.getMessage()), Toast.LENGTH_LONG).show();
}
return d1.compareTo(d2);
}
});
代码之间的日期(不工作)
Collections.sort(adapter.modelValues, new Comparator<Actors>() {
@Override
public int compare(Actors lhs, Actors rhs) {
Date d1 = null, d2 = null, d3 = null, d4 = null;
int rval = -1;
try {
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
String a = lhs.getlastaction();
String b = rhs.getlastaction();
String startdat = "28-Jul-2015";
String enddat = "21-Aug-2015";
d1 = f.parse(a);
d2 = f.parse(b);
d3 = f.parse(startdat);
d4 = f.parse(enddat);
if (d1.before(d4) && (d1.after(d3))) {
rval = d1.compareTo(d4);
}
} catch (Exception e) {
Toast.makeText(getActivity().getApplicationContext(), String.valueOf(e.getMessage()), Toast.LENGTH_LONG).show();
}
return rval;
}
});
在排序后显示数组列表中的所有值。但我需要在两个日期(开始,结束)值之间。我该如何解决这个问题?
答案 0 :(得分:7)
试试这段代码
private ArrayList<Actors> getNewList(ArrayList<Actors> oldList) throws java.text.ParseException {
ArrayList<Actors> newList = new ArrayList<Actors>();
Date d1 = null, d2 = null, d3 = null, d4 = null;
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
String startdat = "28-Jul-2015";
String enddat = "21-Aug-2015";
d3 = f.parse(startdat);
d4 = f.parse(enddat);
for (int i = 0; i < oldList.size(); i++) {
String b = oldList.get(i).getlastaction();
d2 = f.parse(b);
if (d2.compareTo(d3) >= 0 && d2.compareTo(d4) <= 0) {
newList.add(oldList.get(i));
}
}
return newList;
}
答案 1 :(得分:0)
compare方法返回两个元素的比较值,使用哪个集合的元素完成。
要执行所需的操作,您可以执行以下操作。通过传递集合来创建自己的方法。然后遍历每个元素,如果日期不在您的两个日期之间,那么您可以删除(或在另一个列表中添加预期日期)。