java - 为什么集合不从排序列表中删除重复项?

标签 java groovy

为什么集合不从排序列表中删除重复项?我已按第一个打印行显示的升序对日期进行排序,但该集并未删除重复项。这是为什么 ? 程序打印:
[2009 年 CDT 2009 年 4 月 20 日星期一 12:27:47、2009 年 CDT 4 月 20 日星期一 12:27:47、2009 年 12 月 20 日星期日 12:27:47 CST] [2009 年 12 月 20 日星期日 12:27:47(中部标准时间)、2009 年 4 月 20 日星期一 12:27:47(中部夏令时)、2009 年 4 月 20 日星期一 12:27:47(中部夏令时)]

创建一个集合不应该从集合中删除重复的日期吗?

    def void testLoadDoc()
     {
     Date date1 = getCurrentDate(3,20,2009)
     Date date2 = getCurrentDate(11,20,2009)
     Date date3 = getCurrentDate(3,20,2009)


     List<Date> dates = new ArrayList<Date>();
     dates.add(date2);
     dates.add(date1);
     dates.add(date3);

     Collections.sort(dates, new CurrencyDateComparator());
     Set uniqueDates = new HashSet(dates)

     println dates
     println uniqueDates

 }


 private Date getCurrentDate(int month, int day, int year)
 {

     Calendar cal = Calendar.getInstance();
     cal.set(YEAR, year);
     cal.set(MONTH, month);
     cal.set(DAY_OF_MONTH, day);
     return cal.getTime();

 }
}

class CurrencyDateComparator implements Comparator
{
    /* (non-Javadoc)
     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
     */
    public int compare(Object arg0, Object arg1)
    {
        Date p = (Date) arg0;
        Date q = (Date) arg1;

        if (p.before(q))
        {
            return -1;
        }
        else if (p.after(q))
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }

    public boolean equals(Object o)
    {
        if (o instanceof CurrencyDateComparator)
        {
            CurrencyDateComparator c = (CurrencyDateComparator) o;

            return this.equals(o);
        }
        else
        {
            return false;
        }
    }

最佳答案

您的所有日期都有不同的毫秒值,这些值不会打印在您的跟踪中。将毫秒设置为 0。

关于java - 为什么集合不从排序列表中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486833/

相关文章:

java - java中如何从结果集中获取列名

java - 使用 URI 模式的 Dropwizard 请求过滤器

java - 在groovy中导入opencsv库

java - Grails 中的全局对象

java - 当线程改变状态时会发生上下文切换吗?

java - Alfresco 工作流程起始表单选项不可用

每个变体的 Android Gradle 自定义任务

caching - Grails 应用程序中的 grails-cache-ehcache 插件,用于使用 @Cacheable 注释进行缓存

groovy - 如何找到内嵌套的内容?

java - 如果缺少一台主机,Datastax Java 驱动程序将无法连接