所以我在这里遇到这个问题。我想编写非抢占式优先级调度算法,我的方法是对其进行排序,因为您想按照算法所述首先获得最高优先级。如果我在数组中有优先级值的话。示例:工作1 = 2 ;工作2=5;工作3=2;工作4 = 4。
该算法是,当存在两个或多个具有相同优先级的作业时,处理器会分配给“先到达”的作业。从上面的示例来看,应该以这种方式排序(降序):job2 - job4 - job1 - job3。
由于 job1 和 job3 具有相同的优先级,因此我希望 job1 先于 job3。
现在我的问题是这样的。排序首先得到job1而不是job3的解决方案是什么?或者它已经在系统中了,我可以自动解决这个问题。因为我以前从未尝试过 job3 是第一个还是最后一个。
最佳答案
Priority Queue Data Structure Java 中已经存在,您可以使用它。线程安全版本是 - PriorityBlockingQueue
您可以定义自定义比较器,以根据优先级对队列进行排序,同时在优先级相等时保持插入顺序。
这里有很多例子 - Java: How do I use a PriorityQueue?
列出的其他比较策略 here
引用this也有一个
希望对你有帮助!!
关于java - 在java中,排序时,当我有相同的值时,特定问题的解决方案是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34893903/