#java #collections #linked-list
#java #Коллекции #связанный список
Вопрос:
Что касается списка, Linkedlist и Arraylist, какой из них является односторонним списком, а какой — двусвязным списком? И как мы могли бы это изменить?
Комментарии:
1. Список — это интерфейс. Вы уверены, что проверили API?
Ответ №1:
List
Интерфейс, который просто определяет поведение списков.ArrayList
List
Реализация, поддерживаемая массивом. Это не связанный список.LinkedList
List
Реализация, подкрепленная реализацией двусвязного списка.
Если вам нужен односвязный список, вам придется написать его самостоятельно.
Я должен указать, что создать единый связанный список, который реализует java.util.List
, непросто. Для этого требуется, чтобы у вас был ListIterator<E>
, и часть ListIterator
спецификации заключается в том, что вы можете перемещаться в любом направлении с помощью методов hasPrevious
, previous
и previousIndex. Таким образом, сохранить его одновременно эффективным и верным мантре single linked list было бы очень сложно.
Ответ №2:
Вы можете изменить любую коллекцию, используя Collections.reverse(..)
. LinkedList
(и любой Deque
) имеет descendingIterator()