[英]Sort ascending list by price
我有這個 function。 此 function 按價格排序升序
public void f3(List<Fan> list) {
for (Fan fan : list) {
Collections.sort(list, new Comparator<Fan>() {
@Override
public int compare(Fan o1, Fan o2) {
if (o1.getPrice() > o2.getPrice()) {
return 1;
} else if (o1.getPrice() < o2.getPrice()) {
return -1;
} else {
return 0;
}
}
});
}
}
當我打電話給這個 function。 這是一個錯誤
OUTPUT:
線程“主”java.util.ConcurrentModificationException 中的異常
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at MyFan.f3(MyFan.java:41)
at Main.main(Main.java:78)
您無需迭代列表即可使排序調用正常工作。 直接調用Collections.sort()
即可:
Collections.sort(list, new Comparator<Fan>() {
@Override
public int compare(Fan o1, Fan o2) {
if (o1.getPrice() > o2.getPrice()) {
return 1;
} else if (o1.getPrice() < o2.getPrice()) {
return -1;
} else {
return 0;
}
}
});
請注意,在 Java 8 中,您可以利用更簡潔的 lambda 執行此操作的方式:
list.sort(Comparator.comparing(Fan::getPrice));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.