我正在尝试写入优先级队列。对于我的排队方法,我的逻辑是:
如果列表为空,则将事务添加到链接列表中的第一个节点
如果列表不为空,请将列表中事务对象的时间值与当前对象进行比较,如果对象的时间大于链表中的对象,则将对象插入当前索引。
否则,只需将它们添加到linkedlist的最后一个元素
public void enqueue(TransactionDetails elem){
//check whether list is empty
if (list.isEmpty()){
list.addFirst(elem);
return;
}
//queue it according to priority
boolean positioned = false;
for (int x = 0 ; x< list.size() ; x++){
if ( elem.getTierTime() > list.get(x).getTierTime()){
list.add(x , elem);
positioned = true;
}
}
if (positioned == false){
list.addLast(elem);
}
}
public String dequeue(){
return list.removeFirst().getID();
}
public void printAll(){
for (int x = 0 ; x< list.size() ; x++){
System.out.println(list.get(x).toString());
}
}
我通过在方法中输入4个值来测试此方法,并相应地输入200020003000。
System.out.println(queue.dequeue());
System.out.println(queue.dequeue());
System.out.println(queue.dequeue());
System.out.println(queue.dequeue());
当我尝试从列表中除名时,它给我一个空输出
而不是
3000 2000 2000 2000 2000
此外,printAll方法也没有返回任何内容。
这是我的交易细节类。
public class TransactionDetails {
private long epochTime;
private String tier;
private String transactionID;
private int timeTier;
public TransactionDetails(long time , String ID , String tier){
this.epochTime = time;
this.tier = tier;
this.transactionID = ID;
tierTimeAdvantage();
}
//To give the starting time of a transaction in a queue according to tier
public void tierTimeAdvantage(){
switch(this.tier){
case "PLATINUM":
timeTier = 3000;
break;
case "GOLD":
timeTier = 2000;
break;
case "SILVER":
timeTier = 1000;
break;
case "BRONZE" :
timeTier = 0;
break;
}
}
}
感谢评论部分的@Robert。
for (int x = 0 ; x< list.size() ; x++){
if ( elem.getTierTime() > list.get(x).getTierTime()){
list.add(x , elem);
positioned = true;
break;
}
}
}
我应该在break语句中终止循环,一旦我得到了位置。
我的取消排队方法目前也不会删除我想要的项,而是从集合中删除最后一个元素。例如 如果我添加元素:1,2,3我的toString方法将按预期返回1,2,3。 然后,当我使用我的驱动程序调用 dequeue 时,它应该取消第 0 个元素的排队,在本例中为 1。 尽管该方法表示“已从队列中删除元素1”,提示<code>T result 然后,当我再次调用enqueue方法时,在同一个队列上,如果我将字符串
我正在尝试自己编程气泡排序、选择排序和插入排序。但是,我在插入排序方面遇到了麻烦。我会提供我的代码以及每行在做什么 好的,所以int count是找出排序数组的起始位置。然后我声明了index以查找将元素放在排序数组之后的位置,并为未排序数组的第一个元素声明了一个临时int,如果它小于排序数组的最后一个元素。然后它反转数组直到第一个元素,如果它大于我要添加的元素,则为其索引分配索引。本质上是为了让
我有一个Java,它被转换成,这样就可以用以下样式查看它: i、 e 现在的问题是,当我对日期列进行排序时,日期并没有按应有的顺序进行排序。 当前行为:预期行为: 我知道这是因为排序是基于字符串发生的。 我的问题是:有没有办法保留我想要显示日期的格式,并且仍然能够将它们作为日期排序?我可以把它们转换成字符串以外的任何形式吗? 请注意,我无法编辑排序机制。我唯一的选择是为专栏提供一个合适的日期格式。
我正在编写一个最小优先级队列和一个最大优先级队列,如下所示: 输入数组的数字将一个接一个地添加到队列中。然而,当数组[12,4,5,3,8,7]是一个样本输入,打印优先队列的输出是: MIN:[3.0, 4.0, 5.0, 12.0, 8.0, 7.0]MAX:[12.0, 8.0, 7.0, 3.0, 4.0, 5.0] 我定义的比较器有什么问题吗?提前感谢你的帮助。
我有一个,名为,其中包含类型的对象。 您可以在所有车辆上调用该方法。 我要做的是排序,这样车辆被赋予更高的优先级,并被放在队列的前面。 我假设我必须在这里使用一个比较器,但不知道怎么做。
问题内容: 内的所有元素应并排且整齐并排,并受到200px高度的限制,并且没有奇怪的边距或填充。相反,您会遇到上述小提琴中出现的陌生感。 是什么原因造成,并得到中途按下页面,我怎么能解决这个问题?另外,我承认使用表可能是解决整个设置的更好方法,但是我想从上面的代码中找出问题,以便从这个错误中学习。 问题答案: 10.8线高的计算:“线高”和“垂直对齐”属性 “ inline-block”的基线是正