本帖最后由 wre_most2 于 2012-10-18 20:12:33 编辑

解决方案 »

  1.   

    我调试了一下你的代码,没什么问题,可以实现排序,结果是从大到小,下面是我写的代码
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;public class Demo { public static void main(String[] args) {
    ArrayList<ShortCutInfo> mRelaItems = new ArrayList<ShortCutInfo>();
    mRelaItems.add(new ShortCutInfo(1));
    mRelaItems.add(new ShortCutInfo(12));
    mRelaItems.add(new ShortCutInfo(3));
    mRelaItems.add(new ShortCutInfo(7));
    mRelaItems.add(new ShortCutInfo(2)); MyComparator myComparator = new MyComparator();
    Collections.sort(mRelaItems, myComparator);
    for(ShortCutInfo c : mRelaItems) {
    System.out.println("======" + c.hotseatOrder + "======");
    }
    }
    }class MyComparator implements Comparator<ShortCutInfo> {
    @Override
    public int compare(ShortCutInfo object1, ShortCutInfo object2) {
    if (object1.hotseatOrder < object2.hotseatOrder)
    return 1; return 0;
    }}输出结果:======12======
    ======7======
    ======3======
    ======2======
    ======1======
      

  2.   

    求教,我的Comparator也不起作用啊~~不知道到底是怎么回事儿
    import java.util.ArrayList;
    import java.util.Collections;
    /**
    *测试类
    */
    public class Test { public static void main(String[] args){
    ArrayList<DataEntity> array = new ArrayList<DataEntity>();

    DataEntity d1 = new DataEntity(1, 20.0);
    DataEntity d2 = new DataEntity(2, 10.0);
    DataEntity d3 = new DataEntity(3, 10.1);
    DataEntity d4 = new DataEntity(4, 40);
    DataEntity d5 = new DataEntity(5, 3.5);
    array.add(d1);
    array.add(d2);
    array.add(d3);
    array.add(d4);
    array.add(d5);


    SizeComparator cmp = new SizeComparator();
    Collections.sort(array, cmp);

    for(DataEntity data : array){
    System.out.println(data);
    }
    }
    }import java.util.Comparator;/**
     *实现Comparator接口类
    */
    public class SizeComparator implements Comparator<DataEntity>{ @Override
    public int compare(DataEntity arg0, DataEntity arg1) {
    if(arg0.getSize() <= arg1.getSize()){
    return 1;
    }
    return 0;
    }}/**
     *数据实体类
    */
    public class DataEntity {
    private int id;
    private double size;

    public DataEntity(int id, double size){
    this.id = id;
    this.size = size;
    } @Override
    public String toString() {
    return "id = " + id + " size = " + size;
    }
    public int getId() {
    return id;
    } public void setId(int id) {
    this.id = id;
    } public double getSize() {
    return size;
    } public void setSize(double size) {
    this.size = size;
    }
    }输出的结果根本就没有排序:
    id = 1 size = 20.0
    id = 2 size = 10.0
    id = 3 size = 10.1
    id = 4 size = 40.0
    id = 5 size = 3.5
      

  3.   

    我的问题找到了苦逼啊。。那个程序在jdk1.7中没法运行,Comparator不起作用,但是换成1.6的就好了。。难倒是1.7中的bug,
      

  4.   

    Comparator返回值在1.7里必须是一对相反数,如1和-1,不能是1和0.因为1.7的排序算法采用timsort,http://baike.baidu.com/link?url=UCowuf65GHz3cWVf_d7t0QzYUCcwU0QUwserNTIrImlaTBvBAaVfywzppQ70DqWKzUu3dPqsF21k9IDpT8QPE_对返回值有严格要求