Удалить ячейку массива по его индексу, избавится от пустого места после удаления, сдвинуть заполненные ячейки на место пустых

Суть вопроса. Нам нужно удалить элемент из массива по его индексу, потом сдвинуть все элементы так, что бы между заполненными ячейками не было null элементов. Пример:

Допустим мы имеем массив из шести ячеек, заполнено из которых лишь четыре в таком порядке :

овощ[0] огурчик;
овощ[1] романеску;
овощ[2] патисон;
овощ[3] null;
овощ[4] артишок;
овощ[5] null;

нам нужно удалить овощ[2], это просто:

овощ[0] огурчик;
овощ[1] романеску;
овощ[2] null;
овощ[3] null;
овощ[4] артишок;
овощ[5] null;

а дальше, нужно привести массив к виду:

овощ[0] огурчик;
овощ[1] романеску;
овощ[2] артишок;
овощ[3] null;
овощ[4] null;
овощ[5] null;

До чего я смог доехать:

public class Shop {
    public Product[] delete(Product[] products, int index) {
        for (int i = index; i < products.length - 1; i++) {
            if (products[i] != null) { 
                products[i] = products[i++]; 
                products[i] = null;
            }
        } return products;
    }
}

В этом коде я проверяю, не является ли null тот продукт который я хочу удалить, после удачной проверки присваиваю удаляемому продукту значение следующего по индексу, а дальше обNULLяю копируемый продукт.

Дальше мозг заедает, индексы плывут, помогите ради за*бита, во имя святого бубна! Спасибо, внатуре...


Ответы (1 шт):

Автор решения: Denis Kukharenko

Например такой код справится с этим:

  static String[] delete(String[] array, int index) {

    array[index] = null;

    for (int x = 0; x<array.length-1;x++) {

      if (array[x]==null) {

         for (int y=x;y<array.length-1;y++) {

           if(array[y+1]!=null) {

             array[x] = array[y+1];
             array[y+1] = null;
             break;
           }
        }
      }
   }

   return array;

   }
→ Ссылка