refactor: constructors, update docs

- NewCustomTable -> NewCustom
- NewTableBy -> NewBy
- NewTable -> New
This commit is contained in:
2026-04-04 12:27:53 +02:00
parent 2fd9da973b
commit 395a3560c7
10 changed files with 48 additions and 50 deletions

View File

@@ -7,9 +7,9 @@ import (
"strings"
)
// A HashTable is hash table that uses cuckoo hashing to resolve collision. Create
// one with [NewTable]. Or if you want more granularity, use [NewTableBy] or
// [NewCustomTable].
// A HashTable which uses cuckoo hashing to resolve collision. Create
// one with [New]. Or if you want more granularity, use [NewBy] or
// [NewCustom].
type HashTable[K, V any] struct {
tableA, tableB table[K, V]
growthFactor uint64
@@ -192,9 +192,9 @@ func (t *HashTable[K, V]) String() string {
return sb.String()
}
// NewCustomTable creates a [HashTable] with custom [Hash] and [EqualFunc]
// NewCustom creates a [HashTable] with custom [Hash] and [EqualFunc]
// functions, along with any [Option] the user provides.
func NewCustomTable[K, V any](hashA, hashB Hash[K], compare EqualFunc[K], options ...Option) *HashTable[K, V] {
func NewCustom[K, V any](hashA, hashB Hash[K], compare EqualFunc[K], options ...Option) *HashTable[K, V] {
settings := &settings{
growthFactor: DefaultGrowthFactor,
bucketSize: DefaultCapacity,
@@ -217,10 +217,10 @@ func pipe[X, Y, Z any](a func(X) Y, b func(Y) Z) func(X) Z {
return func(x X) Z { return b(a(x)) }
}
// NewTableBy creates a [HashTable] for any key type by using keyFunc to derive a
// NewBy creates a [HashTable] for any key type by using keyFunc to derive a
// comparable key. Two keys with the same derived key are treated as equal.
func NewTableBy[K, V any, C comparable](keyFunc func(K) C, options ...Option) *HashTable[K, V] {
return NewCustomTable[K, V](
func NewBy[K, V any, C comparable](keyFunc func(K) C, options ...Option) *HashTable[K, V] {
return NewCustom[K, V](
pipe(keyFunc, NewDefaultHash[C]()),
pipe(keyFunc, NewDefaultHash[C]()),
func(a, b K) bool { return keyFunc(a) == keyFunc(b) },
@@ -228,10 +228,10 @@ func NewTableBy[K, V any, C comparable](keyFunc func(K) C, options ...Option) *H
)
}
// NewTable creates a [HashTable] using the default [Hash] and [EqualFunc]. Use
// New creates a [HashTable] using the default [Hash] and [EqualFunc]. Use
// the [Option] functions to configure its behavior. Note that this constructor
// is only provided for comparable keys. For arbitrary keys, consider
// [NewTableBy] or [NewCustomTable].
func NewTable[K comparable, V any](options ...Option) *HashTable[K, V] {
return NewCustomTable[K, V](NewDefaultHash[K](), NewDefaultHash[K](), DefaultEqualFunc[K], options...)
// [NewBy] or [NewCustom].
func New[K comparable, V any](options ...Option) *HashTable[K, V] {
return NewCustom[K, V](NewDefaultHash[K](), NewDefaultHash[K](), DefaultEqualFunc[K], options...)
}