orderedmap

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2025 License: MIT Imports: 4 Imported by: 0

README

PkgGoDev License Go Version Tag

CI Go Report Card Maintainability Code Coverage Issues

orderedmap

Package orderedmap implements two types of generic maps, both iterates keys in ordered manner

features

  • two types of maps:
    • Ordered - iterates in same order as items inserted
    • Sorted - iterates in sorted order
  • generic
  • 100% test coverage

example

import (
    "fmt"

    "github.com/s0rg/orderedmap"
)

func exampleSorted() {
	var m orderedmap.Sorted[string, string]

	m.Set("1", "foo")
	m.Set("3", "baz")
	m.Set("2", "bar")

	for k, v := range m.Iter {
		fmt.Printf("%s: %s\n", k, v) // will print in order: 1, 2, 3 (as its sorted)
	}
}

func exampleOrdered() {
	var m orderedmap.Ordered[string, string]

	m.Set("1", "foo")
	m.Set("3", "baz")
	m.Set("2", "bar")

	for k, v := range m.Iter {
		fmt.Printf("%s: %s\n", k, v) // will print in order: 1, 3, 2 (in order of insertion)
	}
}

Documentation

Overview

Package orderedmap implements two types of generic maps that iterates keys in ordered manner

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Ordered

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

Ordered represents generic map, it will iterate keys always in same order - as elements were added (FIFO).

func NewOrdered added in v1.1.0

func NewOrdered[K comparable, V any]() (rv *Ordered[K, V])

NewOrdered creates empty ordered map.

func (*Ordered[K, V]) Clone

func (o *Ordered[K, V]) Clone() (rv *Ordered[K, V])

Clone creates shallow copy of map.

func (*Ordered[K, V]) Del

func (o *Ordered[K, V]) Del(key K)

Del removes element from map.

func (*Ordered[K, V]) Get

func (o *Ordered[K, V]) Get(key K) (value V, ok bool)

Get returns element from map (if any).

func (*Ordered[K, V]) Has

func (o *Ordered[K, V]) Has(key K) (yes bool)

Has checks key existence.

func (*Ordered[K, V]) Iter

func (o *Ordered[K, V]) Iter(next func(key K, value V) bool)

Iter iterates elements in order of addition.

func (*Ordered[K, V]) Len

func (o *Ordered[K, V]) Len() int

Len returns number of elements in map.

func (*Ordered[K, V]) Set

func (o *Ordered[K, V]) Set(key K, value V)

Set adds new element to map.

type Sorted

type Sorted[K cmp.Ordered, V any] struct {
	// contains filtered or unexported fields
}

Sorted represents generic map, it will iterate keys in sorted order.

func NewSorted added in v1.1.0

func NewSorted[K cmp.Ordered, V any]() (rv *Sorted[K, V])

NewSorted creates empty sorted map.

func (*Sorted[K, V]) Clone

func (s *Sorted[K, V]) Clone() (rv *Sorted[K, V])

Clone creates shallow copy of map.

func (*Sorted[K, V]) Del

func (s *Sorted[K, V]) Del(key K)

Del removes element from map.

func (*Sorted[K, V]) Get

func (s *Sorted[K, V]) Get(key K) (value V, ok bool)

Get returns element from map (if any).

func (*Sorted[K, V]) Has

func (s *Sorted[K, V]) Has(key K) (yes bool)

Has checks key existence.

func (*Sorted[K, V]) Iter

func (s *Sorted[K, V]) Iter(next func(key K, value V) bool)

Iter iterates elements in sorted order.

func (*Sorted[K, V]) Len

func (s *Sorted[K, V]) Len() (rv int)

Len returns number of elements in map.

func (*Sorted[K, V]) Set

func (s *Sorted[K, V]) Set(key K, value V)

Set adds new element to map.

Jump to

Keyboard shortcuts

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