Я понимаю, что все дискуссии о производительности несколько бессмысленны, единственное, что действительно имеет значение, это измерение.
Это не обязательно так.
Если ваши знания о том, как приложение будет работать говорит , что некоторые коллекции будут очень большими, то будет хорошей идеей выбрать правильный тип коллекции. Но правильный тип коллекции зависит в решающей степени от того, как коллекции будут использоваться; то есть по алгоритмам.
Например, если в вашем приложении, вероятно, будет доминировать тестирование, если коллекция содержит данный объект, тот факт, что Collection.contains(Object)
равен O(N)
для LinkedList<T>
и ArrayList<T>
, может означает, что ни один из них не является подходящим типом коллекции. Вместо этого, возможно, вам следует представлять коллекцию в виде HashMap<T, Integer>
, где Integer
представляет количество вхождений T
в «коллекции». Это даст вам O(1)
тестирование и удаление за счет увеличения затрат на пространство и более медленной (хотя все еще O(1)
) вставки.
Но следует подчеркнуть, что если вы, вероятно, имеете дело с действительно большими коллекциями, не должно быть такого понятия, как тип коллекции "по умолчанию". Вы должны думать о коллекции в контексте алгоритмов. (И обратная сторона в том, что если коллекции всегда будут небольшими, то, вероятно, не имеет значения, какой тип коллекции вы выберете.)