我的教授要求我对 SoftDrinkList 类进行排序,该类扩展为 SoftDrinks 的 ArrayList,按升序和降序排列,但我似乎无法让它工作
private void sort(boolean isAscending){
if (isAscending){
Collections.sort(super(),Collections.reverseOrder((a,b) -> {
return a.getPrice().compareTo(b.getPrice());
}));
}
}
我对 Java 很陌生,所以我不太了解它的内部工作原理,任何帮助将不胜感激。 PS:有没有办法从当前的ArrayList创建一个临时排序的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;
}
关于java - 作为 ArrayList 的子级排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59340861/