`

Collections.sort排序的用法

 
阅读更多

要充分理解排序就必须先理解最后的return 0, -1 , 1  这三个数字代表的含义。它们不是代表数字而是代表前面和后面要比较的值哪个大哪个小?如果是0表示要比较的这两个数字相等。如果是1表示前面数字大,如果-1表示前面数字小。要理解这个就没问题了。

    在写这个比较规则的时候,就想着前面数字和后面数字比较,如果前面大就return 1,否则return -1.

 

--上面的例子有几重对比排序的功能,这个以后可以借鉴

public class ComparatorTest implements Comparator {

 public int compare(Object o1, Object o2) {
  //传进来要比较的两上对象
  Person person1 =(Person)o1;
  Person person2 =(Person)o2;
  //先比较id
  int flag=person1.getId().compareTo(person2.getId());
   if(flag==0){
    //如果id==0 即两个对象 id 对同 再比较name
     flag= person1.getName().compareTo(person2.getName());
    }
    System.out.println(flag);
  return flag;
 }

 

--下面的例子是浙江电信退票按照退票时间的排序

List<Map.Entry<String, List<Object[]>>> oList = new ArrayList<Map.Entry<String,List<Object[]>>>(backBillMap.entrySet());
    Collections.sort(oList, new Comparator<Map.Entry<String, List<Object[]>>>() {
     @Override
     public int compare(Entry<String, List<Object[]>> o1,
       Entry<String, List<Object[]>> o2) {
      if(CollectionUtils.isEmpty(o1.getValue())) return 0;
      if(CollectionUtils.isEmpty(o2.getValue())) return 0;
      Object[] obj1 = o1.getValue().get(0);
      Object[] obj2 = o2.getValue().get(0);
      Date date1 = DateUtils.toDate(obj1[0].toString(), DateUtils.YEAR_MONTH_DAY_HH_MM_SS);
      Date date2 = DateUtils.toDate(obj2[0].toString(), DateUtils.YEAR_MONTH_DAY_HH_MM_SS);
      
      return (date2.compareTo(date1));
     }});

}

 

在进行排序的时候因为此MAP中的List有为空的情况,排序一直没有效果,但是将为空的情况排除之后就可以正常排序了

我怀疑就是因为下面这句引起的,导致它的排序规则混乱了

if(CollectionUtils.isEmpty(o1.getValue())) return 0;

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java List 排序 Collections.sort

    当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...

    java中Collections.sort排序详解

    Java中的Collections.sort排序是Java.util.Collections类中的一个静态方法,用于对列表进行排序。下面将详细介绍Collections.sort排序的使用和实现机制。 Collections.sort()方法的使用: Collections.sort()方法...

    Java Arrays.sort和Collections.sort排序实现原理解析

    Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...

    java中Collections.sort排序函数用法详解

    如果列表中的元素实现了 `Comparable` 接口,那么 `Collections.sort()` 会使用元素的自然顺序进行排序。例如,如果你有一个包含整数的列表,它们会按照从小到大的顺序排序。对于自定义类,需要重写 `Comparable` ...

    详解Java中Collections.sort排序

    `Collections.sort()`方法会使用`Comparator`的`compare()`方法来比较列表中的每一对元素,并根据比较结果进行排序。`compare()`方法应该遵循以下规则: 1. 如果`o1`应该出现在`o2`之前,返回负整数。 2. 如果`o1`和...

    JAVA对list集合进行排序Collections.sort()

    在Java编程语言中,`Collections.sort()` 方法是一个非常重要的工具,用于对List接口实现的集合进行排序。这个方法使得开发者能够方便地按照指定的顺序排列集合中的元素。本篇文章将详细探讨如何使用 `Collections....

    Java Collections.sort()排序代码案例

    接着,我们使用 Collections.sort() 方法对列表进行排序。最后,我们输出排序后的结果。 ```java package CollectionDemo; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...

    详解java Collections.sort的两种用法

    在上面的代码中,我们首先创建了一个 Integer 类型的 List,然后使用 Collections.sort 方法对其进行排序。排序后的结果是默认的正序排序。 自定义类的排序 在实际应用中,我们经常需要对自定义类进行排序。...

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现Comparable接口。Comparable接口定义了一个自然排序的规则,使得实现了该接口的类的对象可以进行比较并排序。...

    listview按序排列显示

    在这个场景下,我们使用`Collections.sort()`函数对一个包含Map对象的List进行排序,然后将排序后的数据适配到ListView中。以下是关于这个主题的详细解释。 **一、Map与List的关系** 在Java中,Map是一种键值对的...

    JAVA中Collections工具类sort()排序方法

    在Java编程中,Collections工具类提供了许多方便的集合操作,其中`sort()`方法是一个非常重要的功能,用于对List类型的集合进行排序。本文将详细介绍`Collections.sort()`方法的两种使用方式及其示例。 ### 一、...

    金陵科技学院软件院大二上Java高级1215Collections.docx

    在这个文档中,我们主要关注`Collections`类中的一些核心方法的使用,包括`reverse()`, `sort()`, `shuffle()`, `swap()`, `replaceAll()`, `max()`, `min()`以及`frequency()`。 1. **`Collections.reverse(List...

    Collections

    Collections Collections 是 Java 中的一个集合工具类,提供了多种操作集合的...这个示例代码展示了如何使用 Collections 中的部分方法,包括反转列表、随机排序、互换元素、排序、二分查找、查找最大和最小元素等。

    java 使用Collections类对List的排序操作

    1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...

    Java Collections.pdf

    例如,Collections.sort()方法可以对List进行排序,而Collections.synchronizedXXX()方法则可以帮助我们创建线程安全的集合。 在实际开发中,选择合适的集合类型和方法至关重要。例如,当我们需要保持元素插入顺序...

    java sort排序算法实例完整代码

    Java的`sort`方法采用了一种称为TimSort的稳定排序算法,由Tim Peters在Python中设计,后被引入Java。TimSort是一种混合排序算法,结合了插入排序(对于小数组高效)和归并排序(保证稳定性及良好性能)的特点。 ##...

    Collections集合工具类排序.docx

    首先,`sort(List&lt;T&gt; list)`方法是Collections工具类中最常用的排序方法之一,它根据列表中元素的自然排序(natural ordering)来对列表进行排序。自然排序是指列表中的元素必须实现Comparable接口,该接口定义了一...

    arrayList排序

    // 其他属性和方法... } ArrayList&lt;User&gt; userList = new ArrayList(); // 添加用户对象... Comparator&lt;User&gt; nameComparator = new Comparator() { @Override public int compare(User u1, User u2) { ...

    java集合排序方法总结共13页.pdf.zip

    Java中的`Collections.sort()`方法是最常用的排序工具,它可以对List接口的实现类进行原地排序。例如,我们可以对ArrayList或LinkedList调用此方法,排序会按照元素的自然顺序或者自定义比较器进行。 ```java List...

Global site tag (gtag.js) - Google Analytics