Структура данных для связанного списка - PullRequest
0 голосов
/ 22 февраля 2019

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

Медикаменты --------- Показания

лизиноприл --------- гипертония

амлодипин бесилат --------- гипертония

амлодипин бесилат --------- ишемическая болезнь сердца (cad)

карведилол --------- гипертония

ципрофлоксацин --------- инфекции кожи и структуры кожи

ципрофлоксацин --------- костии инфекции суставов

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

Как я могу это сделать?У меня есть это в настоящее время как два отдельных набора хеша

Ответы [ 6 ]

0 голосов
/ 28 февраля 2019

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

0 голосов
/ 23 февраля 2019

Попробуйте использовать TreeMap

  • сохраняет пары ключ-значение в отсортированном (возрастающем) порядке.
  • Вы можете получить доступ к значению с помощью ключа
  • Ключ может быть 'Лекарство "
  • Значение может быть" Индикация "
0 голосов
/ 23 февраля 2019

Использовать дерево B +. Это сортировка по умолчанию и эффективный поиск.

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

0 голосов
/ 22 февраля 2019

Интерфейс SortedSet предоставляет функции для сортировки элементов.А интерфейс NavigableSet предоставляет функции для навигации по SortedSet .

Поскольку класс TreeSet реализует интерфейс NavigableSet , он обладает функциональными возможностями как NavigableSet, так и SortedSet .TreeSet использует самобалансирующееся бинарное дерево поиска, в частности, красно-черное дерево.

Метод contains () используется для проверки наличия данного элемента в данном TreeSet.Если элемент найден, он возвращает true, иначе false.

0 голосов
/ 22 февраля 2019

TreeSet - это отсортированный набор элементов:

Реализация NavigableSet на основе TreeMap.Элементы упорядочиваются с использованием их естественного порядка или с помощью компаратора, предоставляемого во время создания набора, в зависимости от того, какой конструктор используется.

Для поиска, фильтрации, отображения, создания подмножеств и т. Д. Я рекомендую использовать API Java Stream .

0 голосов
/ 22 февраля 2019

Хотя это дерево , а не список, TreeSet отвечает требованиям сортировки, эффективно O(log(n)) для поиска, и вы можете получить подмножества из этого.Будет лучше, если вы объявите это как SortedSet.

...