List
- это интерфейс, который абстрагирует реализацию базового списка. Это также реализуется, например, ArrayList
.
Однако, если вы конкретно хотите LinkedList
, нет ничего плохого в написании LinkedList list
. Фактически, если вы просто передадите его в виде списка, люди могут (не зная реализации) бессознательно писать алгоритмы, такие как:
for(int i = 0; i < list.size(); i++)
{
// list.get(i) or list.set(i, obj)
}
, которые являются линейными в списке произвольного доступа (например, ArrayList
), но квадратичными для LinkedList
(было бы предпочтительно использовать итератор или итератор списка). Java обеспечивает интерфейс маркера RandomAccess , чтобы вы могли различать.
Конечно, вы можете вызывать эти методы и для ссылки типа LinkedList
, но люди должны с большей вероятностью учитывать стоимость.
Как примечание, в .NET LinkedList
по этой причине не реализовано IList
.