ИМХО Я бы порекомендовал использовать коллекции в большинстве случаев. Особенно в интерфейсах и публичных методах.
Например, если вы можете выбрать между:
public List<Integer> getFoo();
public int[] getFoo();
Первый метод дает вам возможность изменить реализацию ArrayList
против LinkedList
и т. Д. Или вернуть неизменяемую версию через Collections.unmodifiableList()
.
Если вы возвращаете массив в методе интерфейса, вам может потребоваться сделать защитную копию перед его возвратом, поскольку вы не можете помешать клиенту изменить содержимое массива. Кроме того, списки имеют лишь несколько недостатков по сравнению с массивами, почти всегда можно заменить массив на ArrayList
, например.
Место, где по-прежнему имеют смысл массивы, - это методы varargs или алгоритмический код, где важны выигрыш в скорости таких операций, как clone
и System.arraycopy
.