Хочу реализовать следующее:
Создаю новый массив,
Если значение не null, записываю его в начало (для этого positionElement),
Если значение null, записываю его в конец (newArray[newArray.length - positionOfElement - 1] = array[i]),
Чтобы не было накладок значение positionElement увеличивается на единицу в любом из вариантов событий.
Но метод не работает. В чем ошибка?
p.s. поняла, что работаю с другим массивом. положила в старый массив ссылку на новый (строкой array = newArray;) , но это не помогло.
package com.javarush.task.pro.task10.task1012;
import java.util.Arrays;
import java.util.Objects;
/*
Дефрагментация памяти
*/
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));
}
public static void executeDefragmentation(String[] array) {
//напишите тут ваш код
String[] newArray = new String[array.length];
int positionOfElement = 0;
for(int i = 0; i < newArray.length; i++) {
if(array[i] != null) {
newArray[positionOfElement] = array[i];
positionOfElement++;
} else {
newArray[newArray.length - positionOfElement - 1] = array[i];
positionOfElement++;
}
}
}
}