`
hai0378
  • 浏览: 529656 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java中Comparator 时间比价 bug

 
阅读更多

/**

* 消息上架时间排序<br>

* @param list

* @param reverse

* @return

*/

protected List<MessageVo> getShowTimeSortList(List<MessageVo> list,

boolean reverse) {

 

if (reverse) {

Comparator<Object> comp = new Comparator<Object>() {

public int compare(Object o1, Object o2) {

 

MessageVo p1 = (MessageVo) o1;

MessageVo p2 = (MessageVo) o2;

 

SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

//showTime : 有效时间

String t1 = p1.getShowTime();  

String t2 = p2.getShowTime();  

 

Date dt1 = null;

Date dt2 = null;

if(null == t1 || null == t2){

return 1;

}

try {

dt1 = sdf.parse(t1);

dt2 = sdf.parse(t2);

} catch (ParseException e) {

logger.error("CommonSearch.java conver time error :"+e.getMessage());

}

 

if(dt1.before(dt2))return 1;

return 0;

//此段代码有linux下有bug,需调整

//if (dt1.getTime() > dt2.getTime()) {  //dt1 在 dt2前

//logger.info("## dt1.getTime() > dt2.getTime() ----> return 1;");

//return 1;

//} else {

//logger.info("## dt1.getTime() > dt2.getTime() ----> return 0;");

//return 0;

//}

}

};

Collections.sort(list, comp);

} else {// 升序

Comparator<Object> comp = new Comparator<Object>() {

public int compare(Object o1, Object o2) {

 

MessageVo p1 = (MessageVo) o1;

MessageVo p2 = (MessageVo) o2;

SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

//showTime : 有效时间

String t1 = p1.getShowTime();  

String t2 = p2.getShowTime();  

 

Date dt1 = null;

Date dt2 = null;

try {

dt1 = sdf.parse(t1);

dt2 = sdf.parse(t2);

} catch (ParseException e) {

logger.error("CommonSearch.java conver time error :"+e.getMessage());

}

 

if (dt1.getTime() <= dt2.getTime()) {

return 1;

} else {

return 0;

}

}

};

Collections.sort(list, comp);

}

 

return list;

}

分享到:
评论

相关推荐

    java排序Comparator和Comparable

    总结一下,`Comparable`和`Comparator`都是Java中实现排序的重要手段。`Comparable`是对象自身的比较,适用于实现类的自然排序;`Comparator`则是外部比较器,可以动态调整排序规则,适用于各种复杂的排序场景。了解...

    java的Comparator和Comparable.docx

    在 Java 中,Comparator 和 Comparable 是两个非常重要的接口,它们用于对象的排序操作。这两个接口都是在 java.util 包中定义的,主要用于定制排序规则。 **一、Comparator 接口** Comparator 接口允许我们创建...

    java Comparator 用法 例子

    Java中的Comparator接口是排序的关键工具,它允许程序员自定义对象的比较规则,从而在集合、数组或树结构(如TreeSet、TreeMap)中实现定制化的排序。在Java的Collections框架中,Comparator扮演着重要的角色,特别...

    Java中的Comparator 对多个排序条件的处理

    这篇博客文章"Java中的Comparator 对多个排序条件的处理"可能详细讨论了如何实现这一目标。 首先,`Comparator`的基本用法是实现其`compare()`方法。例如,如果我们有一个`Person`类,包含`firstName`和`lastName`...

    程序实现时间排序Comparator

    在Java中,`Comparator`是一个功能强大的工具,允许开发者自定义对象的排序规则。下面将详细解析代码示例中的知识点。 ### 1. Comparator接口的基本理解 `Comparator`接口在Java中被用于控制集合(如`List`)中...

    详解JAVA使用Comparator接口实现自定义排序

    JAVA中Comparator接口是Java Collections Framework中的一个重要接口,它提供了自定义排序的能力。通过实现Comparator接口,我们可以根据自己的需求来定义对象的排序规则。 Comparator接口中最重要的方法是compare...

    Java-中的-Comparator-和-Comparable.md

    Java-中的-Comparator-和-Comparable.md

    Java中Comparable和Comparator 2种实现方式学习

    在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要...在阅读文章《Java中Comparable和Comparator 2种实现方式学习》时,你会更深入地了解这两种方式的具体应用和细节。

    java中Comparable和Comparator的区别

    总的来说,Comparable和Comparator都是Java中实现排序的关键工具,它们提供了丰富的灵活性和扩展性,满足了不同场景下的排序需求。理解并掌握这两个接口,对于提升Java编程能力至关重要。在源码分析和工具开发中,...

    Java用Comparator来排序.pdf

    首先,`Comparator`接口在Java中扮演着重要的角色,它允许用户自定义对象的比较规则。`Comparator&lt;T&gt;`接口有一个核心方法`compare(T o1, T o2)`,该方法返回一个整数值,用于指示o1和o2之间的顺序。如果返回值小于0...

    Java中Comparable和Comparator的区别

    例如,Java中的String、Integer等类都实现了Comparable接口,这使得我们可以直接使用这些对象进行自然顺序的比较。当我们需要按照特定规则对类实例进行排序时,只需要在自定义类中实现Comparable接口,并重写`...

    java使用stream对日期排序

    首先,我们需要了解Java中的日期时间API。在Java 8之前,我们通常使用`java.util.Date`和`java.text.SimpleDateFormat`来处理日期。然而,这些类存在一些设计上的问题,因此Java 8引入了新的日期时间API,包括`java....

    Java8 Comparator排序方法实例详解

    Java8 Comparator排序方法实例详解是Java8中的一种排序方法,它提供了一些静态方法,方便我们进行排序操作。Comparator是一个函数式接口,提供了compare、equals、naturalOrder、reverseOrder等方法。 一、自然排序...

    java优先队列PriorityQueue中Comparator的用法详解

    在Java编程中,`PriorityQueue` 是一个基于优先堆的无界队列。它按照特定的顺序(默认是最小优先顺序)来处理元素,允许快速访问队列头部的最小元素。当我们需要自定义排序规则时,可以使用`Comparator`接口。本文将...

    Java中实现Comparator接口和用法实例(简明易懂)

    总的来说,Java中的Comparator接口为我们提供了极大的灵活性,可以针对不同的场景自定义排序规则。通过实现Comparator接口,我们可以轻松地对任何对象集合或数组进行排序,无论是基于单一属性还是多个属性的复合排序...

    java文件夹按时间、大小等排序

    首先,我们要引入`java.io.File`类,它是Java中用于表示文件和目录的基本类。我们可以创建`File`对象来代表一个具体的文件或目录,然后通过这个对象获取文件的各种属性,如创建时间、修改时间以及文件大小等。 对于...

    Java8 Comparator源码演示及解析

    Java8 中的 Comparator 是一个功能强大的接口,用于对集合进行排序。 Comparator 源码演示及解析是 Java 开发者的必备知识,通过本文的示例代码,大家可以对 Comparator 的使用和实现有一个深入的了解。 Comparator...

    Java Comparable和Comparator对比详解

    Java 中的 Comparable 和 Comparator 是两个常用的接口,用于实现对象的比较和排序。它们都是 Java 中的接口,都是用于比较对象的大小的,但它们有所不同。 Comparable 接口 Comparable 接口位于 java.lang....

    class MyComparator implements Comparator类的算法 java

    在Java中,`Set`接口表示一个不允许有重复元素的集合。常见的`Set`实现类有`HashSet`、`TreeSet`等。如果我们想使用`MyComparator`来对`Set`中的元素进行排序,我们可以创建一个`TreeSet`实例,并将`MyComparator`...

Global site tag (gtag.js) - Google Analytics