Подтвердить что ты не робот

Разница в LinkedList, очередь и список

В чем разница при создании этих двух объектов

Queue<String> test = new LinkedList<String>();

и

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

Каковы фактические различия между test и test2? Оба из них LinkedList? Существуют ли различия в производительности или причины использования одного над другим?

4b9b3361

Ответ 1

Два написанных вами оператора строят объект LinkedList<String> для хранения списка строк, а затем назначают его переменной. Разница заключается в типе переменной.

Назначая LinkedList<String> переменной типа Queue<String>, вы можете получить доступ только к методам в LinkedList, которые доступны в интерфейсе Queue<String>, который включает поддержку элементов enqueuing и dequeuing. Это было бы полезно, если бы вам нужно было написать программу, которая использовала очередь для различных операций, и захотела реализовать эту очередь, используя связанный список.

Назначая LinkedList<String> переменной типа List<String>, вы можете получить доступ только к методам в LinkedList, которые доступны в интерфейсе List<String>, которые являются нормальными операциями для поддержания последовательности элементов. Это было бы полезно, например, если вам нужно было обработать список элементов, которые могли бы расти и сокращаться где угодно.

Короче говоря, две линии создают один и тот же объект, но намерены использовать их по-разному. Один говорит, что ему нужна очередь, поддерживаемая связанным списком, в то время как другая говорит, что ей нужна общая последовательность элементов, поддерживаемых связанным списком.

Надеюсь, это поможет!

Ответ 2

Я чувствую, что оба они почти одинаковы, за исключением того, какой тип методов вы собираетесь раскрывать. Поскольку LinkedList реализует оба интерфейса, поэтому выбор одного из них открывает доступ к методам этого типа интерфейса.

пожалуйста, взгляните на эти ссылки для объявлений методов интерфейса

http://docs.oracle.com/javase/6/docs/api/java/util/Queue.html http://docs.oracle.com/javase/6/docs/api/java/util/List.html

Я не уверен в производительности, хотя думаю, что это не должно быть иначе, поскольку реализация объекта является общей.

Ответ 3

В обоих случаях вы создаете экземпляр LinkedList.

Разница заключается в типах переменных, которые вы используете для обозначения этих экземпляров.

test имеет тип Queue и test2 имеет тип List. В зависимости от типа переменной вы можете вызвать только те методы, которые указаны в этом конкретном типе. Я думаю, это важно для вашей ситуации.

По производительности, это будет одинаково, потому что фактическая реализация, которую вы используете в обоих случаях, одинакова (LinkedList).