Что является практическим, реальным примером связанного списка?

Вы также можете использовать Stream API, чтобы выполнить то, что вы хотите

public boolean findProductOptional(String productName) {
   return orderItems
     .stream()
     .filter(Objects::nonNull)
     .map(OrderItem::getProduct)
     .filter(Objects::nonNull)
     .anyMatch(product -> productName.equals(product.getProductName()));
}

Просто передайте список позиций заказа, сопоставьте его с продуктом и проверьте, существует ли продукт с данным именем.

43
задан smci 25 September 2016 в 01:08
поделиться

22 ответа

Связанный список похож строка конги . Все держат бедра человека перед ними, и их бедра сохранены в свою очередь человеком к их задней части, за исключением только тех, которые в передней стороне и спине. Единственный способ добавить людей к строке состоит в том, чтобы найти правильное пятно и разъединить то соединение, затем ввести нового человека или людей.

55
ответ дан Brian Guthrie 26 November 2019 в 22:22
поделиться

Взгляд на Связанный список как структура данных. Это - механизм для представления самоагрегирования в OOD. И можно думать о нем как об объекте реального мира (для некоторых людей, это - действительность)

0
ответ дан LicenseQ 26 November 2019 в 22:22
поделиться

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

0
ответ дан Jonathan Leffler 26 November 2019 в 22:22
поделиться

В.NET BCL класс System.Exception имеет свойство, названное InnerException, который указывает на другое исключение или иначе является null. Это формирует связанный список.

В System.Type, BaseType свойство указывает на другой тип таким же образом.

0
ответ дан Daniel Earwicker 26 November 2019 в 22:22
поделиться

Мне нравится думать о круговом связанном списке как ожерелье жемчуга с каждым жемчугом, содержащим немного данных. Вы просто следуете за строкой к следующему жемчугу данных, и в конечном счете Вы заканчиваете вначале снова.

0
ответ дан Alex Fort 26 November 2019 в 22:22
поделиться

Связанный список очень похож на стопку бумаг, каждого с одним объектом на нем. (В противоположность массивам, которые похожи на pegboards.) Это обычно используется для решения проблемы с этими характеристиками:

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

, Реконструкция простого массива является болью, добавив элемент где-нибудь в середине при проверке, что массив имеет достаточно памяти, и т.д. боль. Со связанным списком эти операции просты. Скажите, что Вы хотели переместить объект № 10, чтобы быть между объектом № 2 и объектом № 3. С бумагами Вы могли просто взять его и переместить его. С массивом необходимо было бы переместить объекты 3 - 9 через слот, затем вставить его. Со связанным списком Вы делаете это: Скажите 9, что тот после того, как это 11, говорит 2 тот после того, как это 10, скажите 10 тот после того, как это 3.

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

1
ответ дан Kim Reece 26 November 2019 в 22:22
поделиться

Взгляд на связанный список:

=> [B] => [C] => [D] =>

Это - a... Обучайтесь! Каждый железнодорожный вагон содержит что-то, и присоединен к другому железнодорожному вагону (или ничто для последнего). Можно только добавить железнодорожный вагон в конце и если Вы хотите избавиться от одного, необходимо присоединить предыдущий со следующим.

1
ответ дан MarmouCorp 26 November 2019 в 22:22
поделиться

Телефонная цепочка реализована непосредственно как связанный список. Вот то, как это работает:

  1. организатор группы А собирает номера телефона всех участников.

  2. организатор присваивает каждому участнику номер еще одного участника для вызова. (Иногда они будут присваивать свой собственный номер так, чтобы они знали сообщение, через которое проходят, но это является дополнительным.)

  3. , Когда сообщение должно быть отправлено, организатор называет заголовок списка и передает сообщение.

  4. глава называет число, которое им присвоили, и передает сообщение.

  5. Шаг 4 повторяется, пока все не услышали сообщение.

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

1
ответ дан Jon Ericson 26 November 2019 в 22:22
поделиться

Моя первая реакция на этот вопрос была, "Озираются! Этот материал везде!" Но после размышления об этом некоторое время, я не мог думать ни о каком примере, который не изобретен.

понятие связанного списка является составным понятием, двумя-fer. У Вас есть понятие списка, который не является никакой проблемой. Список покупок, например. Тогда Вы добираетесь до части ссылки. Один объект бакалеи не знает о следующем объекте бакалеи, таким образом, модель ломается.

я думаю, что причина, Вы испытываете затруднения найти реальный мир eample, состоит в том, что часть ссылки является артефактом программирования, деталью реализации. Существует много способов реализовать списки программно, и один хороший путь состоит в том, чтобы иметь каждый элемент списка, знают о его соседях. Иначе должен иметь Объект списка, который отслеживает объекты и их порядок. Это - то, как большинство списков работает в реальной жизни. В примере выше, Объект списка для списка покупок был бы бумагой (или безотносительно) это записано на.

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

2
ответ дан Jeff Grimshaw 26 November 2019 в 22:22
поделиться

Связанный список может использоваться для реализации очередь . Каноническим реальным примером была бы строка для кассира.

связанный список А может также использоваться для реализации стек . Каноническим реальным примером Ифе был бы один из тех фармацевтов пластины в ресторане самообслуживания где получение по запросу главная пластина от вершины стека.

2
ответ дан JMM 26 November 2019 в 22:22
поделиться

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

примеры Реального мира:

  • группа людей А, ждущая своей очереди для того или другого - специальный вид LL назвал "очередь".

  • стопка тарелок в Вашем буфете - специальный вид LL назвал "стек".

  • "берут число" строки (где числа должны запуститься снова в "1" в какой-то момент) - специальный вид LL, названной "круговой очередью".

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

Мой любимый: Сортировка по неразумному алгоритму = играет 52 погрузки карты, пока Ваша дека не отсортирована.:-)

6
ответ дан T.E.D. 26 November 2019 в 22:22
поделиться

Если Вы думаете об этом, "Ссылка" является просто способом определить "Следующие", "Предыдущие", "Дочерние" или "Родительские" отношения среди данных экземпляры. Так, среди приложений реального мира Вы найдете широкий спектр приложений. Думайте о простом Списке (например, Список покупок) для основных Связанных списков. Но рассмотрите также использование, в которое мы можем поместить Графики (выводящий расстояния на печать между городами на карте, взаимодействиях среди разновидностей в биологии) или Деревья (иерархии в организации или данные в индексе базы данных для двух очень разнообразных примеров).

6
ответ дан Mark Brittingham 26 November 2019 в 22:22
поделиться

Предоставление направлений перемещения: С каждым шагом в направлениях, являющихся узлом и инструкцией по перемещению между каждым узлом как Ваша ссылка.

Пример:

Узел 1: Запустите дома

Ссылка: Обойдите 3 блока на юг в Дом Bob's

Узел 2: дом Bob's

Ссылка: Обойдите 2 блока на север в Дом Alice.

Узел 3: дом Alice

, Если Вы хотите получить одно место другому, необходимо перейти по ссылкам (инструкции) от каждого промежуточного места (узел), Вы не можете только пропустить от дома до Alice.

1
ответ дан Millhouse 26 November 2019 в 22:22
поделиться

Я помню, много лет назад, в одном из моих первых классов колледжа, задаваясь вопросом, где я когда-либо, когда-либо использовал бы связанный список. Сегодня, я не думаю, что существует единственный проект, я продолжаю работать, где я не использовал один, и во многих местах. Это - невероятно фундаментальная структура данных, и верьте мне, это используется в большой степени в реальном мире.

, Например:

  • список А изображений, которые должны быть записаны к CD в медицинском приложении
  • обработки изображений список пользователей веб-сайта, который должен быть послан некоторое уведомление
  • по электронной почте список объектов в 3D игре, которая должна быть представлена на экран

, Это может казаться немного бесполезным Вам теперь, но нескольким годам с этого времени, спросить себя тот же вопрос, Вы окажетесь, удивил это, Вы когда-либо задавались вопросом, где это будет использоваться.

Редактирование: я заметил в одном из Ваших комментариев, которые Вы спросили о том, почему указатель имеет значение. Кто-то справедливо ответил, что указатель действительно не имеет значения для пользователя связанного списка. Пользователь просто хочет список, который содержит, ну, в общем, список вещей. То, как тот список "содержит" тот список вещей, действительно не имеет значения для пользователя. Указатель является частью этого "как". Вообразите строку, продвинутую пол, который приводит к кассиру. Люди должны выдерживать на той строке быть в состоянии добраться до кассира. Та строка (и я признаю, это - что-то вроде фрагмента), аналогия для указателя, который использует связанный список. Первый человек, в кассире, на строке, является заголовком списка. Человек непосредственно позади них на строке является следующим в списке. И наконец, последний человек в строке, на строке, является хвостом списка.

8
ответ дан Rob 26 November 2019 в 22:22
поделиться

Первая вещь понять состоит в том, что связанный список является концептуально тем же как массивом.

единственная разница находится в эффективность из различных операций. Самое главное:

  • Вставка в середине: O (1) для списка, O (n) для массива.
  • Прямой доступ к элементу в середине: O (n) для списка, O (1) для массива.

Таким образом любая аналогия, которая может использоваться для массива (все механизмы плоскости, все объекты в списке покупок...) также, относится к связанному списку, но соображение эффективности могло сделать соответствующим сделать другую аналогию:

массив был бы поля в книжном шкафу . При удалении поля из от энной строки все поля от n+1 должны быть спущены одна полка (таким образом, у Вас нет неприятной пустой полки).

связанный список А, с другой стороны, был бы ожерелье . Когда Вы находите, что больше не любите тот синий драгоценный камень, вынимаете его из последовательности и связываете получающиеся два конца. Никакая потребность циклично выполниться через каждый жемчуг и переместить его именно так можно зафиксировать ожерелье.

12
ответ дан 26 November 2019 в 22:22
поделиться

Строка ожидания в кассире/кассире, и т.д.

серия А заказов, которые должны быть выполнены в порядке.

Любой структура FIFO может быть реализована как связанный список.

12
ответ дан Ben S 26 November 2019 в 22:22
поделиться

, Что такое практический пример реального мира Связанного списка?

самым простым и самым простым является поезд.

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

, Например, заводу Соединения Мига нужен сахар, мука, кукурузная мука, и т.д. Только вокруг изгиба могла бы быть бумажным предприятием по переработке, которому нужны хлор, серная кислота и водород.

Теперь, мы можем остановить поезд, разгрузить каждый автомобиль его содержания, затем позволить поезду продолжиться, но тогда все остальное на поезде должно находиться, в то время как мука высосана из кессона, тогда сахар, и т.д.

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

конец поезда легче отсоединить, чем часть в середине, и значительно легче, чем отсоединение нескольких автомобилей в одном месте и нескольких автомобилей в другом месте.

В случае необходимости, однако, можно вставить и удалить объекты в любой точке в поезде.

Во многом как связанный список.

-Adam

35
ответ дан Adam Davis 26 November 2019 в 22:22
поделиться

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

связанный список А отчасти похож на охоту на мусор. У Вас есть подсказка, и та подсказка имеет указатель для размещения для нахождения следующей подсказки. Таким образом, Вы переходите к следующему месту и получаете другую часть данных и другой указатель. Для получения чего-то в середине, или в конце единственный способ добраться до него состоит в том, чтобы следовать этому списку с начала (или обманывать;))

47
ответ дан Mike Cooper 26 November 2019 в 22:22
поделиться

Цепочка:

alt text

В частности, роликовая цепь:

alt text

Каждый элемент цепочки связан со своим преемником и предшественником.

8
ответ дан 26 November 2019 в 22:22
поделиться

Ваши молекулы ДНК представляют собой списки с двойной связью.

8
ответ дан 26 November 2019 в 22:22
поделиться

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

Возможно, более новые ОС используют некоторые причудливые структуры данных ... там можно использовать связанные списки

0
ответ дан 26 November 2019 в 22:22
поделиться

То, как Blame перемещается вокруг кучи инженеров-программистов, работающих над различными модулями в проекте.

Во-первых, парня с графическим интерфейсом обвиняют в том, что продукт не работает. Он проверяет свой код и видит, что это не его вина: API. Парень API проверяет свой код: не его вина, это проблема с модулем регистратора. Парень модуля Logger теперь обвиняет парня базы данных, который обвиняет установщика парня, который обвиняет...

10
ответ дан 26 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: