如何使用Android中的比较器对数字排序的数组数据进行排序?

时间:2018-10-12 10:38:30

标签: java android sorting comparator

当前,我正在使用以下比较器对数据进行排序,但是我在MyItem中添加了名为sortOrder的值,并考虑也使用“ sortOrder”对数据进行排序。 例如,每个MyItem sortOrder的每个默认数据的值为“ 100”。 sortOrder数据越小 优先级越高。如果数据为1,则为最大,为2秒为3、4,依此类推。但是,如果所有MyItem ArrayList具有与“ 100”相同的等效值,然后将根据以下比较器进行排序。

我想知道的是如何添加条件或比较器以使用sortOrder对数据进行排序,如下所示? 一些例子或技巧会很可爱!我很想听听您的消息。

private final ArrayList<MyItem> mChildren = new ArrayList<>();
 Collections.sort(mChildren, mComparator); //Sorting with this comparator 

// MyItem具有sortOrder,我也想使用此值,但我不知道

public Comparator<MyItem> myComparator = (item1, item2) -> {

        if (item1.typeInt == MyItemModel.TYPE_BOOK && item2.typeInt !=  MyItemModel.TYPE_BOOK) {
            return -1;
        } else if (item1.type !=  MyItemModel.TYPE_BOOK && item2.type ==  MyItemModel.TYPE_BOOK) {
            return 1;
        } else if (item1.type == MyItemModel.TYPE_MAGAZINE && item2.type != MyItemModel.TYPE_MAGAZINE) {
            return -1;
        } else if (item1.type != MyItemModel.TYPE_MAGAZINE && item2.type == MyItemModel.TYPE_MAGAZINE) {
            return 1;
        } 
        return (Integer.compare((int) item1.id, (int) item2.id)) * -1;
    };

0 个答案:

没有答案