`
a729812804
  • 浏览: 41848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过map取值List并比较两个两个时间属性排序

    博客分类:
  • java
 
阅读更多


    public static void main(String[] args) {
        StandardDTO dto1 = new StandardDTO();
        dto1.setReleaseDate(new Date(2011, 1, 11));
        dto1.setvId(1);

        StandardDTO dto2 = new StandardDTO();
        dto2.setReleaseDate(new Date(2012, 1, 11));
        dto2.setvId(2);

        StandardDTO dto3 = new StandardDTO();
        dto3.setApplyBeginDate(new Date(2012, 1, 11));
        dto3.setvId(3);

        StandardDTO dto4 = new StandardDTO();
        dto4.setApplyBeginDate(new Date(2010, 1, 11));
        dto4.setvId(4);

        StandardDTO dto5 = new StandardDTO();
        dto5.setApplyBeginDate(new Date(2010, 1, 11));
        dto5.setReleaseDate(new Date(2012, 1, 11));
        dto5.setvId(5);

        StandardDTO dto6 = new StandardDTO();
        dto6.setReleaseDate(new Date(2011, 1, 11));
        dto6.setApplyBeginDate(new Date(2010, 1, 11));
        dto6.setvId(6);

        StandardDTO dto7 = new StandardDTO();

        StandardDTO dto8 = new StandardDTO();

        List<StandardDTO> ls = new ArrayList<StandardDTO>();
        ls.add(dto1);
        ls.add(dto2);
        ls.add(dto3);
        ls.add(dto4);
        ls.add(dto5);
        ls.add(dto6);
        if (CollectionUtils.isNotEmpty(ls)) {
            Collections.sort(ls, new Comparator<StandardDTO>() {
                public int compare(StandardDTO arg0, StandardDTO arg1) {
                    if (arg0.getReleaseDate() != null
                            && arg1.getReleaseDate() != null
                            && !arg0.getReleaseDate().equals(
                                    arg1.getReleaseDate())) {
                        return arg0.getReleaseDate().compareTo(
                                arg1.getReleaseDate());
                    } else if (arg0.getReleaseDate() != null
                            && arg1.getReleaseDate() == null) {
                        return -1;
                    } else if (arg0.getReleaseDate() == null
                            && arg1.getReleaseDate() != null) {
                        return 1;
                    } else {
                        if (arg0.getApplyBeginDate() != null
                                && arg1.getApplyBeginDate() != null
                                && !arg0.getApplyBeginDate().equals(
                                        arg1.getApplyBeginDate())) {
                            return arg0.getApplyBeginDate().compareTo(
                                    arg1.getApplyBeginDate());
                        } else if (arg0.getApplyBeginDate() != null
                                && arg1.getApplyBeginDate() == null) {
                            return -1;
                        } else if (arg0.getApplyBeginDate() == null
                                && arg1.getApplyBeginDate() != null) {
                            return 1;
                        }
                        return 0;
                    }
                }
            });

            for (StandardDTO obj : ls) {
                System.out.println(obj.getvId());
            }
        }
    }

分享到:
评论

相关推荐

    java8从list集合中取出某一属性的值的集合案例

    Order类是一个简单的Java类,具有两个属性:id和orderNo。该类提供了getter和setter方法来访问和修改这些属性。 ```java public class Order{ String id; String orderNo; public Order(String id, String ...

    java知识点.zip

    Comparator接口则提供了一种自定义排序的方式,可以比较任何两个对象并返回比较结果。 9. **常用API**:Java标准库(JDK)提供了大量的API,包括集合框架(List、Set、Map)、IO流、网络编程、线程处理、异常处理等...

    Java基础面试题(题目+答案)

    - `==`:用来比较两个对象的引用是否指向同一个对象(即比较的是内存地址),对于基本数据类型而言,则是直接比较值是否相等。 - `equals()` 方法:默认情况下,也用于比较两个对象的引用是否相等。但在很多情况下,...

    Java面试测试题目2018张大成总结

    - **equals**:比较两个对象的内容是否相等,通常由类自身实现。 #### 11. &和&&区别 - **&**:逻辑与运算符,同时也可以用于位运算。 - **&&**:短路逻辑与运算符,仅当左侧表达式为真时,右侧表达式才会被计算。 ...

    Java面试题深入解析:在互联网公司面试程序员需要留意的六个问题.docx

    - **死锁预防**:死锁发生在两个或更多线程互相等待对方释放资源而陷入僵局。避免死锁的方法包括避免资源的循环等待、设置超时和资源预分配等。 5. **JVM**: - **内存结构**:JVM内存主要分为堆内存、栈内存、...

    python内置函数意思.docx

    2. **divmod()**: 该函数返回两个数值的商和余数,以元组形式返回 `(quotient, remainder)`,如`divmod(7, 3)`返回`(2, 1)`。 3. **max()** 和 **min()**: 分别用于找出可迭代对象中的最大值和最小值,也可以直接...

    2021-2022计算机二级等级考试试题及答案No.19361.docx

    这是一种重要的操作,用于结合两个表,并基于某个条件过滤结果。因此,正确答案是**A.条件连接**。 ### 5. 集合 - **知识点解析**:Java和其他许多编程语言提供了集合框架,用于存储任意对象的类。这些类包括List...

    java初级技术面试

    **集合框架**:Java集合框架主要分为Set和List两大类。Set不包含重复元素,如HashSet和TreeSet;List允许重复元素,有顺序,如ArrayList和LinkedList。 24. **Set的特点**:Set接口扩展了Collection,不允许重复...

    2021-2022计算机二级等级考试试题及答案No.13380.docx

    由给出的关系R、S和T可知,从R和S两个关系通过自然连接操作得到关系T。自然连接是一种特殊的内连接操作,它基于公共列自动匹配行,并返回所有匹配的行。 ### 15. Java 中的线程间通信 Java 中线程间通信可以通过...

    JAVA开发面试附答案

    - 比较两个对象是否相等通常使用 `equals()` 方法。 - 比较基本类型值使用 `==`。 #### 20. 线程安全集合知识点 **知识点概述:** 线程安全集合是在多线程环境中能够安全使用的集合。 **线程安全集合:** - `...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例027 实现两个变量的互换(不借助 第3个变量) 37 2.3 条件语句 38 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 ...

    2021-2022计算机二级等级考试试题及答案No.17727.docx

    - **域**:属性的取值范围。 ### 7. 数据表窗体 **知识点:** - **数据表窗体**:可以同时显示多条记录。 ### 8. ROM **知识点:** - **ROM**:只读存储器,存储的数据无法修改。 ### 9. 排序算法的选择 **...

Global site tag (gtag.js) - Google Analytics