Единственный способ сделать это без вашего цикла:
Object array[] = new Object[list.size() + 1];
Object oldValues[] = list.toArray();
Object chk = new Object();
array[0] = chk;
System.arrayCopy(oldValues, 0, array, 1, oldValues.length);
System.arrayCopy
немного быстрее, чем зацикливание (не слишком много, но тем не менее, быстрее), хотя повышение производительности, вероятно, будет уменьшено toArray
, в зависимости от реализации вашего Списка.
В целом, у вас есть достойный подход, если List.get(int)
является приемлемой стоимостью. (Если это O (n), вы получите O (n ^ 2) для вашей операции, что является неоптимальным, когда решение Фрэнка O (n).)