我的教授要求我对一个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;
}