Linked list и работа с объектом

118
20 сентября 2019, 04:10

Видел что именно так надо объявлять и так правильней.

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

Но когда через объект вызываю метод: addFirst(), то идея сама подставляет вот такую конструкцию:

((LinkedList<String>) list).addFirst();

Почему я просто не могу сделать list.addFirst() подскажите пожалуйста! Заметил что работает только если объявить вот так:

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

Но как я уже показывал выше правильней использовать вот такую конструкцию:

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

Поправьте если ошибаюсь

Answer 1

TL;DR;

Deque<String> list = new LinkedList<>();

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

Т.е. вы думаете "а что мне вообще нужно от этого объекта", исходя из этого уже и принимаете решение. Например Map<K,V> при использовании почти всегда всё равно HashMap TreeMap или иное. Поэтому пишем Map.

В данном примере из класса LinkedList используется метод addFirst который был получен из интерфейса Deque. Если вы хотите использовать именно его (не add(int index, E element)) то пишите Deque если для вас критичен произвольный доступ (по фрагменту кода это непонятно), то пишите LinkedList

READ ALSO
Считывание нажатий виртуальной клавиатуры

Считывание нажатий виртуальной клавиатуры

Как считывать нажатия кнопок в виртуальной клавиатуре телефона? К примеру я нажал "Enter" и появился тоаст "Вы нажали ентер"Либо нажал на какой-нибудь...

104
Выдает всегда false

Выдает всегда false

Вот задача Есть поле из клеток по средине которого находится роботРобот умеет выполнять 4 команды: двигаться на 1 клетку в сторону: R (right), L (left),...

121
Не могу подключиться к базе данных postgresql из java Netbeans

Не могу подключиться к базе данных postgresql из java Netbeans

Мне надо подключиться к базе данных из NetbeansЯ ввожу все данные которые требуются

120