对不同类型对象的列表进行排序

SOP*_*SOP 4 java

我有一个包含不同类型对象的对象列表,但是所有对象中都有一个属性.list包含Field类,Button类,Page类等的对象,但是一个属性在所有属性中是共同的,即"sequence_no",我想在"sequence_no"的基础上对该列表进行排序.

Ami*_*ila 7

我建议使用方法创建一个接口,类似" Sequenceable" getSequenceNo().

public interface Sequenceable {
    int getSequenceNo();
}
Run Code Online (Sandbox Code Playgroud)

Field,Button,Page类应该实现这个接口和getSequenceNo()方法将返回你的sequence_no.

然后你可以Comparator使用这个比较器实现自己的排序.

例如,您的比较器将如下所示:

class MyComparator implements Comparator<Sequenceable> {

    @Override
    public int compare(Sequenceable o1, Sequenceable o2) {
        return o2.getSequenceNo() - o1.getSequenceNo();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以用:

Collections.sort(list, new MyComparator());
Run Code Online (Sandbox Code Playgroud)