Рассмотрим аналог памяти компьютера на примере массива строк Если удалить некоторые элементы, то в массиве появятся так называемые "дыры" - то есть элементы равные null. Метод executeDefragmentation(String[]), принимающий массив строк, выполняет его "дефрагментацию", то есть перемещает все объекты в начало массива в таком же порядке, передвинув все "дыры" (элементы равные null) в конец массива. В этой задаче тебе нужно реализовать метод executeDefragmentation(String[]). Метод main() можешь использовать для проверки результата работы метода executeDefragmentation(String[]). Требования: • В классе Memory должен быть метод public static void executeDefragmentation(String[]). • Реализуй метод executeDefragmentation(String[]) согласно условию.
public class Memory {

    public static void main(String[] args) {
        String[] memory = {"object15", null, null, "object2", null, null, null, "object32", null, "object4"};
        executeDefragmentation(memory);
        System.out.println(Arrays.toString(memory)); // [object15, null, null, object2, null, null, null, object32, null, object4]
    }

    public static void executeDefragmentation(String[] array) {
        // напишите тут ваш код
        String[] copy1 = new String[array.length];
        int count = 0;
        for(int i = 0; i < array.length; i++) {
            if(array[i] != null) {copy1[count++] = array[i];}
        }
        array = Arrays.copyOf(copy1, copy1.length);
        System.out.println(Arrays.toString(array)); //[object15, object2, object32, object4, null, null, null, null, null, null]
    }
}