【发布时间】:2012-05-27 03:08:49
【问题描述】:
我正在尝试按(类型日期)MyObject.getDate() 对 ArrayList 进行排序
我的格式是由 dd-mm-yyyy 的 SimpleDateFormat 格式化的; 我正在使用自定义比较器对列表进行排序。 我正在使用 Collections.sort(productList, new CustomComparator())
问题我的排序列表仅按 dd 而不是 dd-mm-yyyy。
有什么想法吗?
public class Product
{
private String productName;
private Date boughtOn;
private Date useBy;
private double boughtAt;
private long quantity;
private static DateFormat dateFormat;
public Date getUseBy()
{
return useBy;
}
public void setUseBy(Date useBy)
{
this.useBy = useBy;
}
}
public static Date rtnDate(String dateStr, int currentLineCount)
{
SimpleDateFormat df = new SimpleDateFormat("dd-mm-yyyy");
try
{
Date date = df.parse(dateStr);
return date;
}
catch (ParseException e)
{
productParsingErrorMessages.add("Date parse exception: " + e + "on line " + currentLineCount);
return null;
}
// DateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
// Date date2 = (Date)formatter.parse(dateStr);
}
System.out.println("Product list - BEFORE sorting by UseBy"); printInventory(produuctList); Collections.sort(produuctList, new CustomComparator()); System.out.println("Product list - AFTER sorting by UseBy"); printInventory(produuctList);
public class CustomComparator implements Comparator<Product>
{
@Override
public int compare(Product o1, Product o2)
{
return o1.getUseBy().compareTo(o2.getUseBy());
}
}
产品列表 - 按 UseBy 排序之前
产品名称:糖使用时间:2012 年 12 月 12 日
产品名称: 糖 UseBy : 01-10-2012
产品名称: 糖 使用时间: 16-04-2012
产品名称: 糖 使用时间: 30-01-2012
产品名称:糖使用时间:25-04-2012
产品名称: 糖 使用时间: 03-04-2012
产品名称:糖UseBy : 08-04-2012
产品列表 - 按 UseBy 排序后
产品名称:糖使用时间:01-10-2012
产品名称: 糖 使用时间: 03-04-2012
产品名称: 糖 UseBy : 08-04-2012
产品名称: 糖 使用时间: 12-12-2012
产品名称: 糖 使用时间: 16-04-2012
产品名称:糖使用时间:25-04-2012
产品名称:糖UseBy : 30-01-2012
【问题讨论】:
-
请发布您的代码,否则我们会猜测发生了什么。
-
似乎是 compareTo(date1, date2) 方法的问题。
-
你能提供 compareTo() 的实现吗
-
发布代码,而不是图片。
-
来吧。我们是志愿者,所以您应该有责任让我们轻松地为您提供帮助。我们要求您发布有问题的代码,而不是图片,也不是代码链接。
标签: java sorting arraylist date-sorting