jdk1.7和jdk1.6的Collections.sort方法不一样

Java代码

  1. Collections.sort(list, new Comparator<AAAVo>() {
  2. @Override
  3. public int compare(AAAVo vo1, AAA vo2) {
  4. if(vo1==null||vo2==null){
  5. return 0;
  6. }
  7. if(Integer.valueOf(vo1.getCouponValue())<Integer.valueOf(vo2.getCouponValue())){
  8. if(vo1.getConsumeTime().after(vo2.getConsumeTime())) {
  9. return 1;
  10. }else{
  11. return -1;
  12. }
  13. }else{
  14. return -1;
  15. }
  16. }
  17. });

复制代码

如果有三条数据 value为50、10、10 
jdk1.6的情况下走不到Java代码  [url=][/url]

  • if(vo1.getConsumeTime().after(vo2.getConsumeTime()))

1.7时可以走到。因为 在Java 6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,内部实现换成了TimSort,其对对象间比较的实现要求更加严格

时间: 2024-10-12 20:08:24

jdk1.7和jdk1.6的Collections.sort方法不一样的相关文章

Java Collections.sort方法对list集合排序

1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class UserSort { public static void main(String[] args) { List<User> userList =new ArrayList<User&g

Collections.sort方法对list排序的两种方式

Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 . 规则用来判断对象,算法则考虑如何进行排序 对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定要定义排序规则.方式有两种: 第一种,java.lang下面的一个接口:Comparable.可以让自定义对象实现一个Comparable接口,这个接口只有一个方法comparableTo(Object o) 其规则是当前对象与o对象进行比较,返回一个int值,系统根据此值进行排序. 如当前对象>o

Java基础集锦——利用Collections.sort方法对list排序

要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化.通过下面这种方法,可以动态的指定List按照某一个属性进行排序,例子很简单,看代码就明白了. import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; publ

Collections.sort() in JDK1.6

本文主要介绍了Collections.sort方法在JDK1.6中的源码实现(JDK版本1.6.0_45) 1.Collections.sort() public static <T> void sort(List<T> list, Comparator<? super T> c) { Object[] a = list.toArray(); Arrays.sort(a, (Comparator) c); ListIterator i = list.listIterat

java基础——Collections.sort的两种用法

Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null); } public static <T> void sort(List<T> list, Comparator<? super T> c) {

Collections.sort in JDK6:MergeSort

本文是对JDK6中Collections.sort方法的源码解析,也可以看作是对Comparison method violates its general contract!的后续分析.在JDK6中,该方法底层使用的是经过优化后的归并排序,废话不多说,直接看源码. public static <T> void sort(List<T> list, Comparator<? super T> c) { Object[] a = list.toArray(); Array

java List 排序 Collections.sort()

用Collections.sort方法对list排序有两种方法  第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据order对User排序 */ public class User implements Comparable<User>{ private String name; private Integer order; public String getName() { return name; } public

Java—集合框架 Collections.sort()、Comparable接口和Comparator接口

Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set是并列的. Collections.sort() 排序方法,实现对List对象中的元素进行排序. package com.test.collection; import java.util.ArrayList; import java.util.Collections; import java.ut

java中Collections.sort() 排序函数的用法

用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: /*** 根据order对User排序*/public class User implements Comparable<User>{    private String name;    private Integer order;    public String getName() {        return name;    }    public void