Какой имплементацией интерфейса List (вместо ??? ) лучше всего пользоваться в данном коде?
List‹Integer> list = new ???<>):
for (int 1 = 0; 1 ‹ 10000000; 1++) {
list.add(1);|
}
for (int j = 10; j <= 100; j++) {
list.add(j, j + 10);
list.remove(j):
ArrayList
LinkedList
Нет особой разницы
Другие предметы Колледж Коллекции в Java Java программирование интерфейс List ArrayList LinkedList выбор структуры данных производительность Java добавление элементов в список удаление элементов из списка оптимизация кода колледж программирование Новый
Чтобы определить, какая имплементация интерфейса List лучше всего подойдет для данного кода, давайте рассмотрим особенности различных реализаций List в Java, а именно ArrayList и LinkedList.
Код, который вы привели, выглядит следующим образом:
Listlist = new ???(); for (int i = 0; i < 10000000; i++) { list.add(i); } for (int j = 10; j <= 100; j++) { list.add(j, j + 10); list.remove(j); }
Теперь давайте проанализируем, как каждая из этих реализаций будет вести себя в вашем коде:
Теперь, учитывая ваш код:
Таким образом, если вы ожидаете, что операции добавления и удаления будут происходить часто и в произвольных местах списка, то LinkedList будет лучшим выбором. Если же вы хотите больше производительности при доступе по индексу, то ArrayList будет предпочтительнее.
В вашем конкретном случае, если вы хотите оптимизировать код для добавления и удаления по индексам, лучше использовать LinkedList.
Итак, правильный ответ на ваш вопрос:
Listlist = new LinkedList<>();