mirror of https://github.com/emirpasic/gods
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.7 KiB
Markdown
62 lines
1.7 KiB
Markdown
[![Build Status](https://travis-ci.org/emirpasic/gods.svg)](https://travis-ci.org/emirpasic/gods)
|
|
|
|
# GoDS (Go Data Structures)
|
|
|
|
Implementation of various data structures in Go.
|
|
|
|
## Implementations
|
|
|
|
- Sets:
|
|
- HashSet (unordered)
|
|
- TreeSet (ordered)
|
|
- Stacks:
|
|
- LinkedListStack
|
|
- ArrayStack
|
|
- Maps:
|
|
- HashMap (unordered)
|
|
- TreeMap (ordered)
|
|
- Tree:
|
|
- RedBlackTree
|
|
|
|
## Motivations
|
|
|
|
Collections and data structures found in other languages: Java Collections, C++ Standard Template Library (STL) containers, Qt Containers, etc.
|
|
|
|
## Goals
|
|
|
|
**Fast algorithms**:
|
|
|
|
- Based on decades of knowledge and experiences of other libraries mentioned below.
|
|
|
|
**Memory efficient algorithms**:
|
|
|
|
- Avoiding to consume memory by using optimal algorithms and data structures for the given set of problems, e.g. red-black tree in case of TreeMap to avoid keeping redundant sorted array of keys in memory.
|
|
|
|
**Easy to use library**:
|
|
|
|
- Well-structued library with minimalistic set of atomic operations from which more complex operations can be crafted.
|
|
|
|
**Stable library**:
|
|
|
|
- Only additions are permitted keeping the library backward compatible.
|
|
|
|
**Solid documentation and examples**:
|
|
|
|
- TODO
|
|
|
|
**Production ready**:
|
|
|
|
- TODO
|
|
|
|
There is often a tug of war between speed and memory when crafting algorithms. We choose to optimize for speed in most cases within reasonable limits on memory consumption.
|
|
|
|
## Testing and Benchmarking
|
|
|
|
`go test -v -bench . -benchmem -benchtime 1s ./...`
|
|
|
|
## License
|
|
|
|
Copyright (c) Emir Pasic, All rights reserved.
|
|
|
|
GNU Lesser General Public License Version 3, see [LICENSE](https://github.com/emirpasic/gods/blob/master/LICENSE) for more details.
|