gpt4 book ai didi

java - JAVA中优先级队列的比较

转载 作者:行者123 更新时间:2023-11-30 04:27:49 25 4
gpt4 key购买 nike

我现在就澄清一下,这是大学的作业。我想要能帮助我学习的建议和答案,而不是复制和粘贴。我有一项任务需要模拟医院急诊室。它是练习 ADT 和优先级队列的实现。任务的条件之一是我需要创建一个compareTo方法,我想这将有助于优先考虑进入急诊室的患者,并且它是根据严重程度确定的。如果严重性大于 17,我必须将其替换为 17,如果严重性小于 1,我必须将其替换为 1...我仍然对这个 compreTo 以及两个对象或 int 的比较方式感到困惑:S....根据我在下面写的内容,任何人都可以向我解释如何比较严重性吗?

这只是一个粗略的草稿,只是为了获得一个基本的想法,我将有一个名为患者的对象,我认为它也将有一个名称和条件严重性...

//Comparator Method...

int severity

if (severity > 17) {

replace severity with 17 if (patient severity > other patient severity) { return 1 }

else if(patient severity > other patient severity) { return -1 } else if (patient severity == other patient severity) { return 0 } }

else if (severity < 1) {

replace severity with 17 if (patient severity > other patient severity) { return 1 }

else if(patient severity > other patient severity) { return -1 } else if (patient severity == other patient severity) { return 0 } }

else {

replace severity with 17 if (patient severity > other patient severity) { return 1 }

else if(patient severity > other patient severity) { return -1 } else if (patient severity == other patient severity) { return 0 } }

基本上问题是,您使用什么代码来比较两个对象或属于一个对象的两个整数。如果我在优先级队列中有很多项目需要比较,那么比较器如何工作。感谢您的所有帮助/输入!!!

最佳答案

假设我们有一个带有 int 变量 severity 的类 Patient

“如果 int 低于 min,则将其视为 min;如果低于 maxed,则将其视为 max”操作称为钳位。制作一个夹紧辅助函数会很有用,如下所示:

public static int clamp(int value, int min, int max)
{
return value < min ? min : value > max ? max : value;
}

public int compareTo(Parent other)
{
int clampedSeverity = clamp(this.severity, 1, 17);
int clampedOtherSeverity = clamp(this.severity, 1, 17);
//do comparisons
}

现在,创建一个 PriorityQueue - PriorityQueue 的语义是一个集合,它会在任何插入时自动排序,以便最高的比较元素(在此例中)情况,最高严重性)位于开头。

因此,要插入到 PriorityQueue 中,我们可以通过 ArrayList '支持' PriorityQueue,并使用二分搜索对其进行compareTo 来查看我们是否需要查看更高、更低或者是否有匹配项。如果我们有匹配项,那么我们就可以在那里插入。如果我们没有找到匹配项,但我们已将其范围缩小到比下面的元素更严重但小于上面的元素,我们可以将其插入那里。

如果所有插入都保持 PriorityQueue 排序,则最严重的患者始终位于顶部。

关于java - JAVA中优先级队列的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15421794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com