[![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 keep consume memory by using optimal algorithms and data structures for the given set of problems. - **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.