java—根据传递的列表标识符进行排序

zour9fqk  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(262)

有两个方法,按其中一个元素字段值对列表进行排序。

public static void sortItems(String sortingType, List<Item> items) {
    if (!sortingType.equals("NATURAL")) {
        items.sort(Comparator.comparing(Item::getLength));
    }
}

public static void sortPacks(String sortingType, List<Pack> listOfPacks) {
    if (!sortingType.equals("NATURAL")) {
        listOfPacks.sort(Comparator.comparing(Pack::getTotalLength));
    }
}

如何将它们组合成一个函数,该函数将检查传递的列表标识符并应用适当的排序?

4si2a6ki

4si2a6ki1#

好吧,这两者之间只有一个区别,所以把它放到方法参数中:

public static <T> void sort(String sortingType, List<T> list, Function<T, Integer> function) {
    if (!sortingType.equals("NATURAL")) {
        list.sort(Comparator.comparing(function));
    }
}

然后可以使用以下项调用该方法:

sort("FOO", items, Item::getLength);

或 Package :

sort("FOO", packs, Pack::getTotalLength);

相关问题