簡體   English   中英

按價格升序排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM