Я ищу библиотеку с красно-черным деревом и реализацией Linked List, предлагающую итераторы, которые не поддаются быстрой , Я хотел бы иметь такую же функциональность, как и я в C++ с использованием STL и что:STL-подобный Java Red-black tree/TreeSet/Map и связанные списки с безотказными/безопасными итераторами
- вставки в дереве/списке не отменяет никаких итераторы
- удаление аннулирует только итератор, указывающий на элемент бытия удален
- можно каким-то образом сохранить «позицию» итератора и ссылки на значение она, указывая на
Эта реализация будет хорошо, как было бы предложить возможность изменять список/дерево время используя его часть. Вот некоторые примеры:
- получение соседнего элемента в связанном списке/красно-черном дереве до некоторого сохраненного значения в O (1) не
- пакетных вставок/абсорбция (без ограничения, такие, как один удаления за приращение позиции)
- разделительный список в O (1) через положение итератора
- более эффективные удаления при сохранении позиции итератора (например, путем сохранения итераторов в позиции в связанном списке, удаление O (1), а не O (N))
Мне также понравилась бы эта библиотека/исходный код/реализация, чтобы иметь некоторую лицензию, совместимую с Apache/GPL, и она достаточно расширяема (поэтому я могу внести свои изменения для реализации некоторых операций, таких как примеры из приведенных выше примеров).
Если такой библиотеки нет, есть ли другая библиотека, которая могла бы помочь мне в реализации этих двух структур данных самостоятельно?
Звучит для меня как непреложное дерево и связанный список, который идеально подходит для ваших нужд (вот AVL Tree http://blogs.msdn.com/b/ericlippert/archive/2008/01/21/immutability-in- с-часть-девять-академический плюс мой-AVL-дерево-implementation.aspx). Можете ли вы использовать неизменяемые структуры данных для своего проекта? Если это так, вы можете использовать неизменяемый сортированный набор (google it, множество реализаций на Java), или я могу адаптировать для вас хорошую реализацию ML для Java. – Juliet
Неизменяемые деревья прекрасны, если они обеспечивают вышеупомянутую функциональность. Я полагаю, что такие деревья неизменны, чтобы предотвратить изменения ключей, которые могут привести к ребалансировке дерева, но, с другой стороны, связанный список не обязательно должен быть неизменным, не так ли? – eold