Я моделирую подсистему питания в Java. Простая база данных SQLite содержит набор линейных заменяемых блоков (LRU) и связи между ними. Я пишу API Power Model для упрощения запросов к хранилищу данных, используя шаблоны DDD и репозитории.
Я ищу подходящую коллекцию Java для моделирования результатов запроса. В потоке соединений LRU есть несколько особых случаев, которые необходимо смоделировать:
- Первоначально, есть блок распределения питания (PDU) с несколькими портами (<= 16), который подает питание на нижестоящие LRU. </li>
- Типичные соединения в потоке энергии включают в себя один LRU источника, откуда происходит питание, и один LRU приемника, где питание истощается.
- Однако в нисходящем направлении может быть один источник LRU, подключенный к нескольким приемникам LRU.
- В потоке мощности нет циклов.
Включение # 3 выше заставило меня задуматься о возврате результатов запроса из API в виде дерева. Но единственное дерево, которое я нашел в java.util, - это парное красно-черное дерево TreeMap со значением ключа, которое кажется неподходящим (или я не могу придумать подходящую абстракцию для мощи моделирования). потоки с ним.) Я также рассматривал LinkedHashSet , но я не уверен, что это также уместно. Мне не ясно, как узел в этой структуре будет указывать на нисходящие узлы.
В данный момент меня не интересует эффективность во времени или пространстве. Мой API просто должен работать, предоставляя информацию о подключении питания внешним клиентам (т. Е. Уровню представления приложения на основе мониторинга и управления питанием на основе Java). Также нет никаких ограничений на использование типов / библиотек данных с открытым исходным кодом.
В общем, на языке информатики, я действительно ищу направленный ациклический граф (DAG).
Есть ли реализация этого для Java?
Я правильно понимаю, что DAG подходит для моего сценария?