Вы можете легко узнать, кто находится в начале строки (т. Е. Предыдущий элемент равен нулю). К сожалению, это означает, что вы находитесь на N + 1 территории запроса, чтобы получить весь список.
Query 1 - who's in front
Query 2 - who's behind 1
Query 3 - who's behind 2
....
Query n - who's behind n-1
Query n+1 - who's behind n -> no one is behind n, I must be at the end
Ссылаясь на вопрос, который вы упомянули, не ошибочно принимайте его за синтаксически краткий. Просто потому, что некоторые СУБД предоставят вам удобный синтаксис, они по-прежнему решают ту же проблему, либо: а) выполняя тот же неэффективный алгоритм, но с упрощенным синтаксисом, либо б) индексацию заранее, чтобы СУБД имела доступ к вашим данным эффективно, даже если Вы не моделировали это таким образом. Итак, если вам абсолютно необходимо решить эту проблему с указанной структурой данных с помощью hibernate, то вам следует рассмотреть возможность использования Native SQL Query , настройку на уровне базы данных, используя преимущества функций, которые может предложить ваша СУБД Вы в этой области.
Если вы думаете о структуре данных, которую вы используете, это отлично подходит для представления стека. Вы можете нажимать, вставлять и топить всего пару операций каждая. В общем, для этого хороши однонаправленные связанные списки. Для чего-то вроде очереди вам нужно подумать об использовании двунаправленного связанного списка, поскольку вы можете удалять из очереди, переносить в очередь и ставить в очередь с помощью всего пары операций каждая. LinkedLists отлично подходят для динамического добавления элементов в список. Чтобы привести весь список в порядок, LinkedLists сами по себе довольно неэффективны - вы смотрите на n + 1 или n операций, в зависимости от одного или двунаправленного. Вместо этого ArrayList - это путь. Хотите знать, что такое третий элемент? Круто, используйте свой индекс. По сравнению со связанным списком, где вам нужно использовать first.getNext.getNext, это намного эффективнее! Но если вам нужно добавить материал в список или использовать его для приложений с очередями или стекового типа, у него определенно есть свои недостатки - изменение размеров массивов дороже по сравнению с добавлением новой ссылки в связанный список.
Хотелось бы, чтобы у меня был лучший ответ для вас, но, надеюсь, это по крайней мере несколько полезно.