java - Cloudsim和Java引用返回问题

标签 java cloudsim

我正在从事cloudsim 项目。所以我编写了以下代码,该代码首先计算平均值,然后按升序排列 ArrayList 的值。所以我想通过引用 vmList 以 Vm 类型返回此代码。谁能帮我 ?我该怎么办?或者这段代码有什么问题?

public static <T extends Vm> ArrayList<Double> sortByFFDMean(List<T> vmList) {

    double size = 0;
    double sum = 0;

    ArrayList<Double> vmSize = new ArrayList<Double>();
    ArrayList<Double> vms = new ArrayList<Double>();

    for(Vm v: vmList)
    {
        double cpu = v.getTotalUtilizationOfCpuMips(CloudSim.clock());
        double ram = v.getTotalUtilizationOfRam(CloudSim.clock());
        double bw = v.getTotalUtilizationOfBW(CloudSim.clock());

        size = (cpu + ram + bw / 3);

        vmSize.add(size);

        sum += size;

    }

    double mean = sum/vmList.size();
    for(int i=0; i<vmSize.size(); i++)
    {
        if(vmSize.get(i) > mean)
        {
            vms.add(vmSize.get(i));
        }
        else
        {
            vms.add(vmSize.get(i));
        }
    }

    Collections.sort(vms, Collections.reverseOrder()); 
    return vms;
}

最佳答案

我不明白你的代码。首先获取类型实例 Vm 的列表,计算“大小”并添加到另一个列表中。然后你得到所有值的总和并得到平均值。之后,您会看到所有大小元素,但您的“if”将不起作用。看看它,你验证一下,但无论值是多少,你都可以添加到虚拟机列表中。基本上,您将有两个等于列表:“vmSize”和“vms”。如果您想在“平均值”之上和之下的值之间创建一条线,您需要重新编写代码或执行以下操作:

ArrayList<Double> vmsBelowMean = new ArrayList<Double>();
ArrayList<Double> vmsAboveMean = new ArrayList<Double>();


for(int i=0; i<vmSize.size(); i++)
{
    if(vmSize.get(i) > mean)
    {
        vmsAboveMean.add(vmSize.get(i));
    }
    else
    {
        vmsBelowMean.add(vmSize.get(i));
    }
}

然后将这两个数组组合在一起。

关于返回,我认为您是否需要创建最终的数组来查看这个。

关于java - Cloudsim和Java引用返回问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62268439/

相关文章:

Java 迭代字节数组中的位

java - 设置 EditText 的值时后台线程失败

java - 如果 CloudSim Plus 过载,如何添加多个虚拟机?

java - 延迟提交 cloudlet 任务

java - 如何枚举哈希表的键和值?

Java堆栈溢出与递归

java - 连接 MySQL 数据库中的对象

java - 为任务分配优先级

java - 需要修改Cloudsim中现有的TASK SCHEDULING算法。我应该使用哪些文件?

java - 如何在CloudSim Plus中为Cloudlets设置非相对提交延迟?