Tree and Graph in Java SDK

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Всем привет,

До сих пор нет Tree и Graph.

TreeSet, TreeMap конечно же есть.
Но это не совсем то.
То что дерево используется как внутрення структура это ясно.

Вопрос в другом.
Там же нет api для traverse tree.
Определения глубины дерева и прочих специфичніх именно для дерева функций.

Именно это мне м кажется несколько странным.

1) Есть ли планы добавить в Java SDK указанные базовые коллекции?

2) Ощущаете ли вы лично в них потребность?

3) Как вы решаете вопрос когда вам надо использовать указанные коллекции — пишете сами или используете какие-то библиотеки?

Николай

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Есть сторонние. Или вы хотите нечто вроде boost но для Java?

Или вы хотите нечто вроде boost но для Java?

Это называется commons.apache.org

в commons-collections графов не нашел)

commons.apache.org/...​raph/project-reports.html

Оно в сендбоксе “Last Published: 17 June 2011”

commons — это така свалка где есть все, как и boost

лучше уж Гуава тогда. Там и линки на альтернативы есть github.com/...​instead-of-something-else

лучше уж Гуава тогда.

Наверное надо было подробнее ответить. По моему мнению, коммонсы больше подходят как аналог буста в джаве.

Когда я знал про буст, это было модно и молодежно :)

Потребности в таких странностях — нет.
От TreeMap и т.п. требуется вставка, удаление, поиск следующего вперёд или назад, иногда — нескольких следующих.
Несколько раз требовался multimap, в итоге делал List внутри TreeMap (найденные 3p библиотеки были кривые до ужаса).
Но чтобы спрашивать глубину дерева? А зачем вообще? Она коррелирует с количеством элементов в нём, а как легло в конкретном случае — слабо волнует.

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

спасибо за ответ

Это запоздалая шутка на первое апреля?

LinkedList появился только в Java 7.

docs.oracle.com/...​java/util/LinkedList.html
«Since: 1.2»

Tree and Graph in Java SDK
1) Есть ли планы добавить в Java SDK указанные базовые коллекции?

TreeSet, TreeMap вроде как есть (и до 7-ки были)
Про графи важно понимать зачем они вам. В тех случаях когда они были мне нужны, я делал разные реализации (разные в смысле заточеные под задачу). Тот же gremlin было использовать очень неудобно.

TreeSet, TreeMap вроде как есть (и до 7-ки были)

Не совсем то.
То что дерево используется как внутрення структура это ясно.

Вопрос в другом.
Там же нет api для traverse tree.
Определения глубины дерева и прочих специфичніх именно для дерева функций.

Именно это мне м кажется несколько странным.

Там же нет api для traverse tree.

Итератор? Тут надо понимать что в стд библиотеке только бинарные деревья поиска (на сколько я помню). Это функция которая нужна многим.

Определения глубині дерева и прочих специфичніх именно для дерева функций.

Именно єто мне м кажется несколько странным.

Ничего странного. Простой вопрос: зачем вам нужны эти функции?
Суть в том что как правило, когда нужны подобные функции, вам и граф нужно организовывать по особенному для вашей задачи.
Если что, то в джаве нет еще кучи специфических структур данных, которые проще реализовать самому чем прикручивать костыли или пользоваться обобщенным АПИ.

Например, мне сейчас нужна упорядоченная коллекция с быстрой вставкой (нескольких элементов), которая бы возвращала или порядковые номера куда были вставлены элементы, или хотя бы были ли изменения в первых Х-элементов.
Вопрос: кому еще такое надо?

Вопрос: кому еще такое надо?

Ну это и было одним из моих сомнений.

Но может быть имело бы смысл создать некую библиотеку со всеми возможными типами коллекций (во избежание изобретения велосипедов)?

Понятно что есть либі для работі с коллекциями.
Но навряд ли они достаточно универсальны.

Если что, то в джаве нет еще кучи специфических структур данных, которые проще реализовать самому чем прикручивать костыли или пользоваться обобщенным АПИ.

И это ещё один вопрос.
Понятно что например многие серьёзные проекты даже большинство базовых классов реализуют сами.
Тут скорее дело в цене вопроса...

Можно и тот же LinkedList самому успешно реализовать.

Логичній вопрос — зачем?

Тот же gremlin было использовать очень неудобно.

Спасибо.

Підписатись на коментарі