Как расширить массив?
Можно вместо массива использовать ArrauList.ArrayList<String> strings = new ArrayList<String>();
        strings.add("a1");
        strings.add("a2");
        strings.add("a3");
        strings.add("a4");
        String s = strings.get(1);
А как на счет ассоциативного, многоуровневого массива, хранить в массиве старый и новый массивы по id, а потом циклом разбирать как вам нужно.