Skip to content

Conversation

@masyamandev
Copy link

Here is an implementation of List with optimized indexOf method.

Proposed data structure recalculates indexes on the fly when objects are inserted or removed from the middle of the list. There are no O(n) operations on a single element. Add, get, remove and indexOf methods have complexity of O(log(n)) if all elements in the list are different, however performance may degrade up to O(log(n) ^ 2) in cases when all elements in the list are the same.

There are 2 data structures implemented.
IndexedTreeListSet contains unique elements and implements both List and Set. All operations performs as O(log(n)). Slightly faster than IndexedTreeList.
IndexedTreeList is the similar structure, but it does not have restriction for unique objects. Performance may degrade up to O(log(n) ^ 2). This structure is slightly slower than IndexedTreeListSet even if it contains unique objects.

Code is based on TreeList adding internal Map for indexing and improved node management.

More information can be found in my original project's readme: https://github.com/masyamandev/indexable-set .

@masyamandev masyamandev changed the title Indexed tree list Indexed tree list - List with optimized add(index, obj), remove(index), remove(obj), indexOf(obj) Jan 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants