# emirpasic/gods

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/emirpasic-gods).**

17,401 stars · 1,824 forks · Go · other

## Links

- GitHub: https://github.com/emirpasic/gods
- awesome-repositories: https://awesome-repositories.com/repository/emirpasic-gods.md

## Topics

`avl-tree` `b-tree` `binary-heap` `data-structure` `enumerable` `go` `golang` `iterator` `list` `map` `queue` `red-black-tree` `set` `sort` `stack` `tree`

## Description

This project is a comprehensive container framework for Go that provides a suite of fundamental data structures and algorithms. It offers a standardized set of tools for managing, sorting, and traversing complex data collections, enabling developers to implement efficient storage and retrieval logic within their applications.

The library distinguishes itself through an interface-driven design that allows for interchangeable use of different storage implementations. It supports custom ordering and sorting behavior through external comparison functions, which decouple the data structures from specific arrangement rules. This flexibility is complemented by stateful iterators that provide sequential access to elements without exposing the underlying storage details.

The framework covers a broad range of data management capabilities, including the implementation of lists, stacks, queues, trees, and hash maps. It supports hierarchical data modeling through self-balancing trees, efficient key-value mapping, and the maintenance of unique element sets. Additionally, the library includes utilities for dynamic array resizing and data serialization to facilitate persistent storage and reliable data exchange.

## Tags

### Programming Languages & Runtimes

- [Go Container Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/go-container-frameworks.md) — Provides a comprehensive, interface-driven container framework for managing and traversing complex data collections in Go.
- [Data Structure Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/language-specific-resources/systems-and-performance-languages/go-resources/data-structure-libraries.md) — Offers a collection of fundamental algorithms and container types including lists, stacks, queues, trees, and hash maps.
- [Custom Sorting Logic](https://awesome-repositories.com/f/programming-languages-runtimes/custom-sorting-logic.md) — Provides flexible container management by allowing custom comparison functions to define element ordering and sorting behavior.
- [Generic Algorithmic Tools](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/language-specific-resources/systems-and-performance-languages/go-resources/generic-algorithmic-tools.md) — Provides standardized tools for sorting and traversing data collections using interface-driven design and stateful iterators.

### Data & Databases

- [Data Structure Implementations](https://awesome-repositories.com/f/data-databases/data-structure-implementations.md) — Implements a comprehensive suite of fundamental data structures including lists, stacks, queues, trees, and hash maps.
- [Hierarchical Data Models](https://awesome-repositories.com/f/data-databases/hierarchical-data-models.md) — Supports hierarchical data modeling through self-balancing tree structures for efficient lookup and modification.
- [Key-Value Pair Managers](https://awesome-repositories.com/f/data-databases/key-value-pair-managers.md) — Provides key-value mapping structures for efficient data association and lookup. ([source](https://godoc.org/github.com/emirpasic/gods))
- [List Data Structures](https://awesome-repositories.com/f/data-databases/list-data-structures.md) — Provides flexible list data structures supporting indexed access and iteration. ([source](https://godoc.org/github.com/emirpasic/gods))
- [Collection Iterators](https://awesome-repositories.com/f/data-databases/collection-iterators.md) — Implements stateful iterators for sequential access to collection elements without exposing internal storage details.
- [Unordered Unique Collection Management](https://awesome-repositories.com/f/data-databases/unordered-unique-collection-management.md) — Manages collections of unique elements using hash-based or tree-based structures. ([source](https://godoc.org/github.com/emirpasic/gods))

### Education & Learning Resources

- [Balanced Search Trees](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/data-structure-implementations/data-structures/balanced-search-trees.md) — Provides self-balancing tree structures that maintain logarithmic time complexity for efficient data storage and retrieval.
- [Ordered Lists](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/data-structure-implementations/data-structures/ordered-lists.md) — Maintains ordered sequences using dynamic arrays and linked lists for efficient access. ([source](https://godoc.org/github.com/emirpasic/gods/v2))
- [Stack Structures](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/data-structure-implementations/data-structures/stack-structures.md) — Implements LIFO and FIFO data structures for efficient linear data management. ([source](https://godoc.org/github.com/emirpasic/gods/v2))

### Software Engineering & Architecture

- [Generic Data Abstractions](https://awesome-repositories.com/f/software-engineering-architecture/abstract-data-types/generic-data-abstractions.md) — Uses interface-driven design to provide interchangeable, type-safe generic container implementations.
- [Algorithmic Performance Optimizations](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/performance-optimization-principles/algorithmic-performance-optimizations.md) — Provides optimized algorithmic implementations for search, sort, and traversal to ensure high performance.
- [Hash Tables](https://awesome-repositories.com/f/software-engineering-architecture/hash-tables.md) — Provides hash table implementations for constant-time key-value lookups in unordered collections.
- [Queue Implementations](https://awesome-repositories.com/f/software-engineering-architecture/queue-implementations.md) — Provides specialized stack and queue structures, including priority queues and circular buffers, for controlled data processing. ([source](https://godoc.org/github.com/emirpasic/gods))
- [Comparison Logic Providers](https://awesome-repositories.com/f/software-engineering-architecture/structural-comparison-tools/comparison-logic-providers.md) — Enables custom ordering behavior through external comparison functions that decouple data structures from specific arrangement rules.
- [Data Serialization Formats](https://awesome-repositories.com/f/software-engineering-architecture/data-serialization-formats.md) — Supports serialization of complex container types into standard formats for persistence. ([source](https://godoc.org/github.com/emirpasic/gods))
- [Dynamic Arrays](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-arrays.md) — Implements dynamic array resizing to manage memory efficiently during element insertion.

### Development Tools & Productivity

- [Task Queues](https://awesome-repositories.com/f/development-tools-productivity/task-queues.md) — Includes specialized structures like priority queues and circular buffers for managing task sequences and background processing.
