Вы можете легко сделать это в других базах данных с помощью рекурсивного запроса (YMMV на производительность).
Другой способ сделать это - сохранить два дополнительных бита данных, левый и правый стоимость. Левое и правое значение получены из предварительного предпросмотра древовидной структуры, которую вы представляете.
Это известно как измененный обход дерева предзаказов и позволяет запускать простой запрос, чтобы получить все родительские значения в один раз. Он также имеет название «вложенный набор».
, учитывая, что
blockquote>currentDay
является объектомMyDate
, аnext()
возвращаетMyDate
, но в классе
MyDate
нет методаnext()
( что сообщение об ошибке пытается сказать). Так чтоcurrentDay.next()
не скомпилируется.В классе
DateIterator
есть толькоnext()
(но, конечно, вы не хотите называть это, поскольку это будет иметь побочный эффект от продвижения итератора).Вы, должно быть, хотели позвонить
currentDay.nextDay()
вместо.