/**
* 消息上架时间排序<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;
}
相关推荐
总结一下,`Comparable`和`Comparator`都是Java中实现排序的重要手段。`Comparable`是对象自身的比较,适用于实现类的自然排序;`Comparator`则是外部比较器,可以动态调整排序规则,适用于各种复杂的排序场景。了解...
在 Java 中,Comparator 和 Comparable 是两个非常重要的接口,它们用于对象的排序操作。这两个接口都是在 java.util 包中定义的,主要用于定制排序规则。 **一、Comparator 接口** Comparator 接口允许我们创建...
Java中的Comparator接口是排序的关键工具,它允许程序员自定义对象的比较规则,从而在集合、数组或树结构(如TreeSet、TreeMap)中实现定制化的排序。在Java的Collections框架中,Comparator扮演着重要的角色,特别...
这篇博客文章"Java中的Comparator 对多个排序条件的处理"可能详细讨论了如何实现这一目标。 首先,`Comparator`的基本用法是实现其`compare()`方法。例如,如果我们有一个`Person`类,包含`firstName`和`lastName`...
在Java中,`Comparator`是一个功能强大的工具,允许开发者自定义对象的排序规则。下面将详细解析代码示例中的知识点。 ### 1. Comparator接口的基本理解 `Comparator`接口在Java中被用于控制集合(如`List`)中...
JAVA中Comparator接口是Java Collections Framework中的一个重要接口,它提供了自定义排序的能力。通过实现Comparator接口,我们可以根据自己的需求来定义对象的排序规则。 Comparator接口中最重要的方法是compare...
Java-中的-Comparator-和-Comparable.md
在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要...在阅读文章《Java中Comparable和Comparator 2种实现方式学习》时,你会更深入地了解这两种方式的具体应用和细节。
总的来说,Comparable和Comparator都是Java中实现排序的关键工具,它们提供了丰富的灵活性和扩展性,满足了不同场景下的排序需求。理解并掌握这两个接口,对于提升Java编程能力至关重要。在源码分析和工具开发中,...
首先,`Comparator`接口在Java中扮演着重要的角色,它允许用户自定义对象的比较规则。`Comparator<T>`接口有一个核心方法`compare(T o1, T o2)`,该方法返回一个整数值,用于指示o1和o2之间的顺序。如果返回值小于0...
例如,Java中的String、Integer等类都实现了Comparable接口,这使得我们可以直接使用这些对象进行自然顺序的比较。当我们需要按照特定规则对类实例进行排序时,只需要在自定义类中实现Comparable接口,并重写`...
首先,我们需要了解Java中的日期时间API。在Java 8之前,我们通常使用`java.util.Date`和`java.text.SimpleDateFormat`来处理日期。然而,这些类存在一些设计上的问题,因此Java 8引入了新的日期时间API,包括`java....
Java8 Comparator排序方法实例详解是Java8中的一种排序方法,它提供了一些静态方法,方便我们进行排序操作。Comparator是一个函数式接口,提供了compare、equals、naturalOrder、reverseOrder等方法。 一、自然排序...
在Java编程中,`PriorityQueue` 是一个基于优先堆的无界队列。它按照特定的顺序(默认是最小优先顺序)来处理元素,允许快速访问队列头部的最小元素。当我们需要自定义排序规则时,可以使用`Comparator`接口。本文将...
总的来说,Java中的Comparator接口为我们提供了极大的灵活性,可以针对不同的场景自定义排序规则。通过实现Comparator接口,我们可以轻松地对任何对象集合或数组进行排序,无论是基于单一属性还是多个属性的复合排序...
首先,我们要引入`java.io.File`类,它是Java中用于表示文件和目录的基本类。我们可以创建`File`对象来代表一个具体的文件或目录,然后通过这个对象获取文件的各种属性,如创建时间、修改时间以及文件大小等。 对于...
Java8 中的 Comparator 是一个功能强大的接口,用于对集合进行排序。 Comparator 源码演示及解析是 Java 开发者的必备知识,通过本文的示例代码,大家可以对 Comparator 的使用和实现有一个深入的了解。 Comparator...
Java 中的 Comparable 和 Comparator 是两个常用的接口,用于实现对象的比较和排序。它们都是 Java 中的接口,都是用于比较对象的大小的,但它们有所不同。 Comparable 接口 Comparable 接口位于 java.lang....
在Java中,`Set`接口表示一个不允许有重复元素的集合。常见的`Set`实现类有`HashSet`、`TreeSet`等。如果我们想使用`MyComparator`来对`Set`中的元素进行排序,我们可以创建一个`TreeSet`实例,并将`MyComparator`...