Чем отличается List от ArrayList?

277
12 декабря 2017, 19:01

Чем отличается List от ArrayList. Погуглил, но толком ничего не нашел (как минимум, на русском языке). Насколько я понял, ArrayList является реализацией List, однако различий я особых не заметил. Так в чем же все-таки разница?

Answer 1

Так как ArrayList реализует интерфейс List, то у него должны быть все методы List плюс (возможно) какие-то другие. Отсюда внешняя схожесть. При этом в List эти методы вообще никак не реализованы и невозможно создать объект командой new List().

Реализации одного и того же интерфейса могут иметь внешне одни и те же методы, но радикально отличаться их внутренней реализацией. Например, в основе ArrayList - массив, который при необходимости заменяется большим (или меньшим) по размеру с переписыванием содержимого из старого в новый. В основе же LinkedList (другой реализации интерфейса List) лежит двунаправленный связанный список, а каждый элемент списка содержит в себе ссылку на следующий и предыдущий элементы.

Answer 2

То есть рекомендуется писать так как вы указали, вместо ArrayList<String> list = new ArrayList<>();? А почему рекомендуется писать именно так? Есть ли в этом различие?

В ссылку типа List вы можете присвоить объект любого наследующего его типа (и ArrayList и LinkedList). Потом можете вызывать из этой ссылки методы, которые есть в типе List, не задумываясь, какой именно объект вы туда поместили.

Например, так удобно передавать параметры в методы или создавать массивы объектов List, которые могут содержать объекты разных типов в разных элементах.

Answer 3

Как правило к List "приводят" объект нужного класса, реализующего интерфейс List.

К примеру, насколько я знаю, рекомендуется писать именно

List<String> list = new ArrayList<>();
List<String> list = new LinkedList<>();

и т.д.

READ ALSO
форма &lt;input type=&ldquo;datetime-local&rdquo;&gt;

форма <input type=“datetime-local”>

Подскажите пожалуйста как можно сделать что б в datetime-local всегда выдавался 24 часовой пояс либо как можно его заменить либо хотя бы изменить...

247
Как вывести результат работы функции в переменную, которую я собираюсь использовать вне этой функции для отображения в html?

Как вывести результат работы функции в переменную, которую я собираюсь использовать вне этой функции для отображения в html?

Доброго времени сутокК сожалению я только новенький в программировании и много не понимаю, но буду очень благодарен за помощь

248
Отправка формы из div

Отправка формы из div

Добрый день, столкнулся с такой проблемойДелаю калькулятор для сайта с последующим заказом

252