如何在我的项目中使用 Comparator 方法
Posted
技术标签:
【中文标题】如何在我的项目中使用 Comparator 方法【英文标题】:How to use the Comparator method in my project 【发布时间】:2021-05-19 14:32:11 【问题描述】:我正在用 Java 创建一个问题跟踪器。我有一个问题类如下:
import java.util.Date;
public class Issue
int IssueNo;
String IssueTitle;
String text;
Date TimeStamp=new Date();
String Creator;
String Assignee;
String tag;
int priority;
String status;
我的程序必须根据优先级(从 1 到 9 的数字)或时间戳(创建问题的日期)来显示问题。我想知道如何使用优先级队列和比较器来显示问题
【问题讨论】:
【参考方案1】:比较器有一种方法:
int compareTo(T a, T b)
返回负整数表示 a 更大,正整数表示 b 更大,0 表示相等
因此,要进行多因素比较(正如您所做的那样),请从优先级开始。
int priorityCompare = ((Issue)b).priority - ((Issue)a).priority;
如果priorityCompare 不为0,则返回priorityCompare。如果为0,则移动到下一个比较点(日期),以此类推,直到找到不同的比较点,或者所有点都相等,在这种情况下返回0;
【讨论】:
理解概念很重要,但应将学习者导向Comparator.comparingInt(Issue::getPriority).thenComparing(Issue:getTimeStamp)
。
场景是用户可以根据优先级或创建日期过滤问题。将有两个复选框“优先级”和“日期”。如果他们选择优先级,则应根据优先级显示问题.如果他们选择日期,则应根据日期显示问题
@SaadHamim 听起来像使用 RadioButton 而不是复选框在设计上更有意义。但是你会想使用一个比较器,在检查优先级时按优先级进行比较,在检查日期时使用日期
谢谢!我是数据结构的新手,现在我意识到(谢谢)我可以创建多个比较器类并将其传递给我的优先级队列以上是关于如何在我的项目中使用 Comparator 方法的主要内容,如果未能解决你的问题,请参考以下文章