gpt4 book ai didi

java - 一旦我在函数之外,优先级队列中的值就会被删除,为什么?

转载 作者:行者123 更新时间:2023-12-01 19:29:36 25 4
gpt4 key购买 nike

我正在调用一个函数来从另一个函数创建优先级队列。

void readparameters() throws NumberFormatException, IOException
{

try (BufferedReader br = new BufferedReader(new FileReader("FB2010-1Hr-150-0.txt"))) {
while (br.ready()) {
Coflow_All.add(br.readLine());
}
}
Framework.size = Coflow_All.size();
System.out.println("\nThere are "+Framework.size+" coflows entries\n");


for(queue_entry=1;queue_entry<=15;queue_entry++)
{
//Extract a Coflow and satisfy conditions

ArrayList<Integer> Coflow_each = new ArrayList<Integer>();


String input = Coflow_All.get(coflow_pick);
int find=input.indexOf(":");
if (find != -1)
{
//this will give substring
input= input.substring(0 , find);
}

String[] numbers = input.split(" ");
for (String s : numbers)
{
Coflow_each.add(Integer.parseInt(s));
}
//System.out.println(Coflow_each);

createqueue(Coflow_each.get(0),Coflow_each.get(1),Coflow_each.get(2),Coflow_each.get(4));
coflow_pick++;

}

void createqueue(int id,int Arrivaltime,int mappers_req,int reducers_req) throws NumberFormatException
{
Framework.list.clear();


Collections.addAll(Framework.list, Arrivaltime,mappers_req,reducers_req);
//System.out.println("The list is "+Framework.list);

//Analyze the parameters in Framework.list and then do the entry in queue

for(int i=1;i<=mappers_req;i++)
{
Queue1.add(new Create_queue(id,Framework.list));
System.out.println(Queue1.size());
queue_entry++;

}
java.util.Iterator<Create_queue> it = Queue1.iterator();
while(it.hasNext()) {
System.out.println(Queue1.poll().toString());
}
System.out.println(Queue1.size());
}
}

但是当我在循环之外时,显示的队列大小为 0。我希望队列的大小只增加而不是 0。请帮忙!!

所有变量都在类中定义,因此不用担心那部分。

最佳答案

在我看来,下面的代码块正在迭代您的集合并删除所有元素。

    java.util.Iterator<Create_queue> it = Queue1.iterator();
while(it.hasNext()) {
System.out.println(Queue1.poll().toString());
}
System.out.println(Queue1.size());

我认为上面代码的目的是将队列的内容打印到屏幕上,然后显示它包含的元素总数。

但是,由于您使用的是 poll(),它会检索并删除项目 ( https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html ),因此您将删除所有元素。

要实际打印元素,您需要执行类似于此 SO 答案 Print out all elements of a stack/queue 中所写的操作

关于java - 一旦我在函数之外,优先级队列中的值就会被删除,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60156439/

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