Java 作为ArrayList的子级进行排序

Java 作为ArrayList的子级进行排序,java,sorting,inheritance,arraylist,collections,Java,Sorting,Inheritance,Arraylist,Collections,我的教授让我对一个软饮料列表类进行排序,该类扩展到软饮料的数组列表,按升序和降序排列,但我似乎无法让它起作用 private void sort(boolean isAscending){ if (isAscending){ Collections.sort(super(),Collections.reverseOrder((a,b) -> { return a.getPrice().compareTo(b.getPrice()); }));

我的教授让我对一个软饮料列表类进行排序,该类扩展到软饮料的数组列表,按升序和降序排列,但我似乎无法让它起作用

private void sort(boolean isAscending){
    if (isAscending){
        Collections.sort(super(),Collections.reverseOrder((a,b) -> {
        return a.getPrice().compareTo(b.getPrice());
    }));
    }
}
我对Java还很陌生,所以我不太了解它的内部工作原理,如果有任何帮助,我将不胜感激。
PS:有没有办法从当前列表创建一个临时排序的ArrayList?因为我只需要按排序的顺序打印,所以我并不想对实际数组进行排序。谢谢

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

 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;
}
私有数组列表排序(布尔isAscending){
ArrayList copy=新建ArrayList(originalList);//创建原始列表的副本
比较器递增比较器=新比较器(){
@凌驾
公共int比较(软饮料a、软饮料b){
返回a.getPrice()-b.getPrice();
}
};
如果(正在搜索){
复制.排序(升序比较器);
}否则{
copy.sort(Collections.reverseOrder(ascendingComparator));
}
返回副本;
}

您不能让它工作是什么意思?有什么问题吗?当我将鼠标悬停在代码上方时,Netbeans注释“'void'type not allowed here”(无效)如果我可以问一下,第3行到第8行是什么意思,它对排序有什么帮助?当您希望根据对象中的自定义属性(即
private int price;
)对数组排序时,使用Comparator。
compare(…)
函数用于确定对象的顺序:如果a的价格大于b,或者b的价格大于a。在
compare(…)
方法中,如果减法的结果是我看到的,我已经尝试了您的方法,但是对于第2行中的原始列表部分,我不知道如何引用当前的ArrayList,因为它是这样编码的:``公共类SoftDrinkList扩展了ArrayList{(这里的排序方法)}``你可以简单地用
这个
关键字来引用它。因此,您将拥有
arraylistcopy=newarraylist(这个)