Java

В чем разница List и ArrayList?

Две формы реализации метода. Оба варианта работают одинаково. Не могу понять как их отличить и где использовать один вариант, а где второй

Илья Ошурков
Илья Ошурков
1 669
> Могу я использовать вариант, который на второй картинке, игнорируя способ из первой

в данном случае можешь

с другой стороны, нужно подумать: а нужен ли тебе в возвращаемом типе именно ArrayList?
есть ли вероятность, что ты захочешь в будущем юзать другую реализацию списка?
ЕП
Егор Пахоруков
51 164
Лучший ответ
где вы вычитали что ArrayList реализует интерфейс Array? что за Array?
Конечно одинаково. Ты написал два варианта:
List list = new ArrayList();
ArrayList list = new ArrayList();
В обоих случаях у тебя ArrayList, следовательно работать по-разному оно не может.
Просто ArrayList является List, потому его можно туда поместить.
ArrayList реализует интерфейс List. То есть из List можно много других типов наделать, а ArrayList это уже отдельный подвид List. Лучше везде используй ArrayList и не заморачивайся
Антон Корж
Антон Корж
74 422
List list = new ArrayList(); -- в этом случае, в list будут доступны только те методы, которые есть в List - будет использоваться их реализация из ArrayList.
ArrayList list = new ArrayList(); -- в этом случае, будут доступны все публичные методы ArrayList.
Также работает и для классов. В ситуации, если class B extends A
A a = new B(); - доступ ко всем публичным методам из А. Если какие-то из них переопределены в В, то будут, очевидно, вызываться именно эти самые методы из В. К публичным методам из B доступа нет, если не сделать приведение к B.
В в = new B(); - доступ ко всем публичным методам из В.

Лучше юзать 1 вариант, чтобы потом не переучиваться :)
Роман Долбилов
Роман Долбилов
13 926
прочитай про полиморфизм
Юрий Штейн
Юрий Штейн
2 475
ArrayList может содержать в себе элементы любых типов (он необобщенный), LIst только одного (он обобщенный). В вашем случае разницы нет, потому что используется String
Максим Зырянов ArrayList тоже обобщённый
Максим Зырянов В Java вроде все коллекции обобщённые.