[英]Comparator inside comparator?
我正在制作一個程序,將工人分類到工作場所。 我制作了一個基本比較器 (comp),用於根據工作場所需要多少工人進行排序,並且運行良好。 我已將其放入優先隊列;
PriorityQueue<Workplaces> workplaces = new PriorityQueue<>(comp);
因此,最需要工人的工作場所首先得到他們。 但如果兩個工作場所需要相同數量的工人,我想比較一下。 如果兩個工作場所需要 10 個工人,我想比較哪個工作場所與所有工人的平均距離最短。 平均距離最短的那個得到工人。
如果比較器返回 0,我想再次比較這些元素。
所以問題是,在我通過了優先級隊列中的第一個比較器之后,我該如何進行比較? (我不必使用優先級隊列)
使用Comparator.thenComparing
方法。
如果你有workerCountComparator
和distanceComparator
,你可以使用workerCountComparator.thenComparing(distanceComparator)
來獲得你需要的東西。
您可以通過多次調用此方法來組合兩個以上的比較器:
c1.thenComparing(c2)
.thenComparing(c3)
.thenComparing(c4);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.