首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cloudsim和Java引用返回问题

Cloudsim和Java引用返回问题
EN

Stack Overflow用户
提问于 2020-06-09 02:03:39
回答 1查看 33关注 0票数 0

我正在做cloudsim项目。所以我写了下面的代码,这个代码首先计算平均值,然后对ArrayList的值进行升序。所以我希望通过在Vm类型中引用vmList来返回此代码。有人能帮我吗?我应该怎么做?或者这段代码有什么问题?

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2020-06-09 04:43:43

我不懂你的代码。首先获取一个类型实例Vm的列表,计算“大小”并添加到另一个列表中。然后你得到所有值的总和,并得到平均值。之后,您将看到所有的size元素,但您的"if“将不起作用。看一看,你验证,但并不重要的是什么是值,你添加到vms列表。基本上你会有两个相等的列表:"vmSize“和"vms”。如果你想在“均值”上面和下面的值之间画一条线,你需要重新组织你的代码,或者做一些类似的事情:

代码语言:javascript
复制
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));
    }
}

然后把这两个数组放在一起。

关于return,我想如果你需要创建你的最终数组,看看这个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62268439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档