我的教授要求我对一个SoftDrinkList类进行排序,该类以升序和降序扩展到SoftDrinks的ArrayList,但是我似乎无法使其正常工作

private void sort(boolean isAscending){
    if (isAscending){
        Collections.sort(super(),Collections.reverseOrder((a,b) -> {
        return a.getPrice().compareTo(b.getPrice());
    }));
    }
}


我对Java还是很陌生,所以我真的不知道Java的内部功能,不胜感激。
PS:有什么方法可以从当前列表中创建一个临时排序的ArrayList?因为我只需要按排序的顺序打印,所以我真的不想对实际的数组进行排序。谢谢

最佳答案

您可以修改函数以返回原始列表的排序副本。假设您正在使用名为SoftDrink的类,则可以执行以下操作:

 private ArrayList<SoftDrink> sort(boolean isAscending){
    ArrayList<SoftDrink> copy = new ArrayList<>(originalList); // creates a copy of your original list
    Comparator<SoftDrink> ascendingComparator = new Comparator<SoftDrink>() {
        @Override
        public int compare(SoftDrink a, SoftDrink b) {
            return a.getPrice() - b.getPrice();
        }
    };
    if (isAscending) {
        copy.sort(ascendingComparator);
    } else {
        copy.sort(Collections.reverseOrder(ascendingComparator));
    }

    return copy;
}

07-27 23:24