有人可以解释这种方法的工作原理吗

Vig*_*lla 0 java arrays for-loop

该方法即将删除最小人口的城市!

方法:

public void delCity(long population) {
    if (population== 0) {
        System.out.println("There is no city!");
        return;
    }

    for (int i = 0; i < index; i++) {
        if (cities[i].getPopulation() < population) {
            for (int j = i; j < index - 1; j++) {
                cities[j] = cities[j + 1];
            }
            cities[--index] = null;
            i--;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我不理解的部分是第二个for循环的主体,例如如何cities[j] = cities[j + 1];工作以及它是cities[--index] = null; i--;什么?我非常感谢你的回复.

gra*_*upa 5

这个循环正在移动数组的所有值[从位置i,即要删除的城市].(因为数组是静态的,否则元素之间就是null)

for (int j = i; j < index - 1; j++) {
    cities[j] = cities[j + 1];
}
Run Code Online (Sandbox Code Playgroud)

然后将最后一个元素设置为null并减少索引;

 cities[--index] = null;
Run Code Online (Sandbox Code Playgroud)

这里是对转变的解释: 在此输入图像描述 在此输入图像描述

正如提到的评论.你的复杂性是O(N²).但只是更改数据结构(例如,使用列表),您可以将其改进为O(N).