Cloudsim 和 Java 引用返回问题



我正在从事云模拟项目。所以我写了下面的代码,这段代码首先计算平均值,然后对 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"将不起作用。查看它,您验证,但并不重要,您可以在 vms 列表中添加值。基本上,您将有两个相等的列表:"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));
}
}

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

关于返回,我认为如果您需要创建最终数组以查看此内容。

相关内容

  • 没有找到相关文章

最新更新