Выберите реализацию структуры данных и интерфейс на основе основного использования:
Произвольный доступ: используйте Список для типа переменной и ArrayList вкапот
Добавление: используйте Коллекция для переменного типа и LinkedList под капотом
Цикл и процесс: используйте Итерируемый и смотрите выше для использования под капотом на основе кода производителя
Используйте самый абстрактный интерфейс , когдапередача данных.Тем не менее, не используйте Коллекция , когда вам нужен произвольный доступ. Список имеет get (int) , что очень полезно при произвольном доступе.
Типизированные коллекции, такие как Список составляютсинтаксическое удобство массивов.
Не используйте массивы, если у вас нет квалифицированного эксперта по производительности , который анализирует и рекомендует их.Даже тогда вы должны получить второе мнение.Массивы, как правило, являются преждевременной оптимизацией, и их следует избегать.
Вообще говоря, вам гораздо лучше использовать интерфейс , а не конкретный тип.Конкретный тип затрудняет переделку внутренних частей рассматриваемой функции.Например, если вы возвращаете int [] [], вы должны выполнить все вычисления заранее.Если вы вернете List>, вы можете лениво выполнять вычисления во время итерации (или даже одновременно в фоновом режиме), если это полезно.