Skip to content

ghosind/collection

Repository files navigation

collection

Test Go Report Card codecov Latest version License Badge Go Reference

English | 中文

Generics collections framework for Golang.

Note

This package requires Go version 1.18+.

Overview

This package provides the following data structure interfaces and implementations:

  • Collection: The root interface of most of the structures in this package (without Dict).

  • List: An ordered collection (also known as a sequence).

    • ArrayList: The implementation of List based on Go built-in slice structure.

    • LinkedList: The implementation of List based on doubly linked list.

    • CopyOnWriteArrayList: The thread safe implementation of List based on copy-on-write strategy.

  • Set: A collection interface that contains no duplicate elements.

    • HashSet: The implementation of Set based on Go built-in map structure.

    • SyncSet: The thread safe implementation of Set based on sync.Map.

  • Dict: A object that maps keys to values, and it cannot contain duplicate key.

    • HashDict: The implementation of Dictionary based on Go built-in map structure.

    • SyncDict: The thread safe implementation of dictionary based on sync.Map.

Installation

You can install this package by the following command.

go get -u github.com/ghosind/collection

After installation, you can import it by the following code.

import "github.com/ghosind/collection"

Examples

ArrayList Examples

Create an integer list, add and get elements from the list.

// import "github.com/ghosind/collection/list"

l := list.NewArrayList[int]()
l.Add(10)
l.Add(20)
l.Add(30)
log.Print(l.Get(1)) // 20

HashSet Examples

Create a string set, add and test elements in the set.

// import "github.com/ghosind/collection/set"

fruits := set.NewHashSet[string]()

fruits.Add("Apple")
fruits.Add("Banana")

log.Print(fruits.Contains("Banana")) // true
log.Print(fruits.Contains("Lemon")) // false

HashDict Examples

// import "github.com/ghosind/collection/dict"

languages := dict.NewHashDict[string, int]()

languages.Put("C", 1972)
languages.Put("Go", 2007)

log.Print(languages.GetDefault("C", 0)) // 1972

License

This project is licensed under the MIT License - see the LICENSE file for details.