我有两个类,都具有int ID属性,并且我必须使此Comparator类两次以按ID对它们进行排序:

public class Class1Comparator implements Comparator<Class1> {

/**
 * Comparator Constructor.
 */
public Class1Comparator() {
}

@Override
public int compare(Class1 arg0, Class1 arg1) {
    return arg0.getId() - arg1.getId();
}
}


和除了Class2而不是Class1完全相同的所有东西都可以工作,但是有没有办法将它们合并到一个类中?

最佳答案

从包含通用ID的基类派生Class1Class2,以及Comparator<BaseClass>的单个实现。

例:



public class BaseClass
{
    private int id;

    //.
    //.
    //.

    public static class CmpID implements Comparator<BaseClass>
    {
        @Override
        public int compare(BaseClass a, BaseClass b) {
            //Could be implemented null safe
            return a.id - b.id;
        }
    }
}


编辑:您还可以实现一个通用接口,例如

public interface IdentifiableObject
{
    int getId();
}


Class1Class2使用。
在这里,Comparator<IdentifiableObject>的单个实现也足够了。

关于java - 一类中的两个比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15320982/

10-11 21:10