orderedmap

package module
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2025 License: MIT Imports: 7 Imported by: 0

README

orderedmap

A Golang data structure that preserves insertion order while behaving like a standard map, similar to LinkedHashMap in Java.

  • Maintains key insertion order
  • Supports JSON serialization/deserialization

Usage

package main

import (
	"encoding/json" // or any other lib of your choice
	"fmt"
	"github.com/emretanriverdi/orderedmap"
)

func main() {
	// Create a new OrderedMap
	om := orderedmap.New[string, int]()

	// Insert key-value pairs
	om.Set("a", 1)
	om.Set("b", 2)
	om.Set("c", 3)

	// Retrieve values
	val := om.GetOrDefault("b") // Returns 2
	fmt.Println(val)

	// Get all keys in insertion order
	keys := om.Keys()
	fmt.Println(keys) // Output: [a b c]

	// Delete a key
	om.Delete("b")

	// Serialize to JSON
	jsonData, _ := json.Marshal(om)
	fmt.Println(string(jsonData)) // Output: {"a":1,"c":3}

	// Deserialize from JSON
	json.Unmarshal([]byte(`{"x": 100, "y": 200}`), &om)

	// Print updated map
	fmt.Println(om.Keys()) // Output: [x y]
}

Caveats

  • Not optimized for concurrent access, use sync.Mutex if needed.

Tests

go test

Disclaimer

This project was created for fun and as a simple exercise.

If you plan to use it in production environment, please do so at your own risk.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type OrderedMap added in v1.0.1

type OrderedMap[K comparable, V any] struct {
	// contains filtered or unexported fields
}

func New added in v0.1.3

func New[K comparable, V any]() *OrderedMap[K, V]

func NewWithCapacity added in v1.1.0

func NewWithCapacity[K comparable, V any](capacity int) *OrderedMap[K, V]

func (*OrderedMap[K, V]) Clear added in v1.3.0

func (om *OrderedMap[K, V]) Clear()

func (*OrderedMap[K, V]) Clone added in v1.3.0

func (om *OrderedMap[K, V]) Clone() *OrderedMap[K, V]

func (*OrderedMap[K, V]) ContainsKey added in v1.3.0

func (om *OrderedMap[K, V]) ContainsKey(key K) bool

func (*OrderedMap[K, V]) ContainsValue added in v1.3.0

func (om *OrderedMap[K, V]) ContainsValue(value V, equal func(a, b V) bool) bool

func (*OrderedMap[K, V]) ContainsValueReflect added in v1.3.0

func (om *OrderedMap[K, V]) ContainsValueReflect(value V) bool

func (*OrderedMap[K, V]) Delete added in v1.0.1

func (om *OrderedMap[K, V]) Delete(key K)

func (*OrderedMap[K, V]) ForEach added in v1.3.0

func (om *OrderedMap[K, V]) ForEach(f func(K, V))

func (*OrderedMap[K, V]) ForEachReverse added in v1.3.0

func (om *OrderedMap[K, V]) ForEachReverse(f func(K, V))

func (*OrderedMap[K, V]) Get added in v1.0.1

func (om *OrderedMap[K, V]) Get(key K) (V, error)

func (*OrderedMap[K, V]) GetOrDefault added in v1.3.0

func (om *OrderedMap[K, V]) GetOrDefault(key K) V

func (*OrderedMap[K, V]) IndexOf added in v1.3.0

func (om *OrderedMap[K, V]) IndexOf(key K) int

func (*OrderedMap[K, V]) IsEmpty added in v1.3.0

func (om *OrderedMap[K, V]) IsEmpty() bool

func (*OrderedMap[K, V]) Iter added in v1.3.0

func (om *OrderedMap[K, V]) Iter() iter.Seq2[K, V]

func (*OrderedMap[K, V]) IterReverse added in v1.3.0

func (om *OrderedMap[K, V]) IterReverse() iter.Seq2[K, V]

func (*OrderedMap[K, V]) Keys added in v1.0.1

func (om *OrderedMap[K, V]) Keys() []K

func (*OrderedMap[K, V]) Len added in v1.3.0

func (om *OrderedMap[K, V]) Len() int

func (*OrderedMap[K, V]) MarshalJSON added in v1.0.1

func (om *OrderedMap[K, V]) MarshalJSON() ([]byte, error)

func (*OrderedMap[K, V]) Merge added in v1.3.0

func (om *OrderedMap[K, V]) Merge(other *OrderedMap[K, V])

func (*OrderedMap[K, V]) Pop added in v1.3.0

func (om *OrderedMap[K, V]) Pop(key K) (V, bool)

func (*OrderedMap[K, V]) Reverse added in v1.3.0

func (om *OrderedMap[K, V]) Reverse()

func (*OrderedMap[K, V]) Set added in v1.0.1

func (om *OrderedMap[K, V]) Set(key K, value V)

func (*OrderedMap[K, V]) SortAsc added in v1.3.0

func (om *OrderedMap[K, V]) SortAsc() error

func (*OrderedMap[K, V]) SortDesc added in v1.3.0

func (om *OrderedMap[K, V]) SortDesc() error

func (*OrderedMap[K, V]) String added in v1.3.0

func (om *OrderedMap[K, V]) String() string

func (*OrderedMap[K, V]) UnmarshalJSON added in v1.0.1

func (om *OrderedMap[K, V]) UnmarshalJSON(data []byte) error

func (*OrderedMap[K, V]) Values added in v1.0.1

func (om *OrderedMap[K, V]) Values() []V

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL