簡體   English   中英

比較器內部的比較器?

[英]Comparator inside comparator?

我正在制作一個程序,將工人分類到工作場所。 我制作了一個基本比較器 (comp),用於根據工作場所需要多少工人進行排序,並且運行良好。 我已將其放入優先隊列;

PriorityQueue<Workplaces> workplaces = new PriorityQueue<>(comp);

因此,最需要工人的工作場所首先得到他們。 但如果兩個工作場所需要相同數量的工人,我想比較一下。 如果兩個工作場所需要 10 個工人,我想比較哪個工作場所與所有工人的平均距離最短。 平均距離最短的那個得到工人。

如果比較器返回 0,我想再次比較這些元素。

所以問題是,在我通過了優先級隊列中的第一個比較器之后,我該如何進行比較? (我不必使用優先級隊列)

使用Comparator.thenComparing方法。

如果你有workerCountComparatordistanceComparator ,你可以使用workerCountComparator.thenComparing(distanceComparator)來獲得你需要的東西。

您可以通過多次調用此方法來組合兩個以上的比較器:

c1.thenComparing(c2)
  .thenComparing(c3)
  .thenComparing(c4);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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