Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据传递的列表标识符进行排序_Java_List_Sorting - Fatal编程技术网

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

Java 根据传递的列表标识符进行排序,java,list,sorting,Java,List,Sorting,有两个方法,它们按一个元素字段值对列表进行排序 public static void sortItems(String sortingType, List<Item> items) { if (!sortingType.equals("NATURAL")) { items.sort(Comparator.comparing(Item::getLength)); } } public static void sortPacks(St

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

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));
    }
}
publicstaticvoidsortitems(字符串排序类型,列表项){
如果(!sortingType.equals(“NATURAL”)){
排序(Comparator.comparing(Item::getLength));
}
}
公共静态void排序包(字符串排序类型,包列表){
如果(!sortingType.equals(“NATURAL”)){
排序(Comparator.comparing(Pack::getTotalLength));
}
}

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

好吧,这两者之间只有一个区别,因此将其放入方法参数中:

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", packs, Pack::getTotalLength);

给它们取一个相同的名字,然后让Java的方法重载完成剩下的工作。不确定你的确切意思是什么,你能提供一个代码示例吗?
sort("FOO", packs, Pack::getTotalLength);