func (t *StringHashTable) DeleteStringKey(strkey string) bool {
	xxHasher64.Reset()
	min := minimum(len(Key_t{}), len(strkey))
	var bytekey Key_t
	copy(bytekey[:], []byte(strkey))
	_, err := xxHasher64.Write(bytekey[:min])
	if err != nil {
		panic(err)
	}
	hashkey := xxHasher64.Sum64()
	cell := (*HashTable)(t).Lookup(hashkey)
	if cell == nil {
		return false
	}
	(*HashTable)(t).DeleteCell(cell)
	return true
}
DeleteStringKey deletes the cell (if there is one) that has
been previously inserted with the given strkey string key.
package offheap
import (
	"fmt"
	xxh64 "github.com/glycerine/xxhash-64"
)
type ByteKeyHashTable HashTable
var xxHasher64 = xxh64.New64()
func NewByteKeyHashTable(initialSize int64) *ByteKeyHashTable {
	return (*ByteKeyHashTable)(NewHashTable(initialSize))
}
func (t *ByteKeyHashTable) InsertBK(bytekey []byte, value interface{}) bool {
	xxHasher64.Reset()
	min := minimum(len(Key_t{}), len(bytekey))
	_, err := xxHasher64.Write(bytekey[:min])
	if err != nil {
		panic(err)
	}
	hashkey := xxHasher64.Sum64()
	cell, ok := (*HashTable)(t).Insert(hashkey)
	copy(cell.ByteKey[:], bytekey)
	cell.SetValue(value)
	return ok
}
func minimum(a, b int) int {
	if a < b {
		return a
	}
	return b
}
func (t *ByteKeyHashTable) LookupBK(bytekey []byte) (Val_t, bool) {
	xxHasher64.Reset()
	min := minimum(len(Key_t{}), len(bytekey))
	_, err := xxHasher64.Write(bytekey[:min])
	if err != nil {
		panic(err)
	}
	hashkey := xxHasher64.Sum64()
	cell := (*HashTable)(t).Lookup(hashkey)
	if cell == nil {
		return Val_t{}, false
	}
	return cell.Value, true
}
func (t *ByteKeyHashTable) DeleteBK(bytekey []byte) bool {
	xxHasher64.Reset()
	min := minimum(len(Key_t{}), len(bytekey))
	_, err := xxHasher64.Write(bytekey[:min])
	if err != nil {
		panic(err)
	}
	hashkey := xxHasher64.Sum64()
	cell := (*HashTable)(t).Lookup(hashkey)
	if cell == nil {
		return false
	}
	(*HashTable)(t).DeleteCell(cell)
	return true
}
type StringHashTable HashTable
func NewStringHashTable(initialSize int64) *StringHashTable {
	return (*StringHashTable)(NewHashTable(initialSize))
}
func (t *StringHashTable) InsertStringKey(strkey string, value interface{}) bool {
	xxHasher64.Reset()
	min := minimum(len(Key_t{}), len(strkey))
	var bytekey Key_t
	copy(bytekey[:], []byte(strkey))
	_, err := xxHasher64.Write(bytekey[:min])
	if err != nil {
		panic(err)
	}
	hashkey := xxHasher64.Sum64()
	cell, ok := (*HashTable)(t).Insert(hashkey)
	cell.ByteKey = bytekey
	cell.SetValue(value)
	return ok
}
func (t *StringHashTable) LookupStringKey(strkey string) (Val_t, bool) {
	xxHasher64.Reset()
	min := minimum(len(Key_t{}), len(strkey))
	var bytekey Key_t
	copy(bytekey[:], []byte(strkey))
	_, err := xxHasher64.Write(bytekey[:min])
	if err != nil {
		panic(err)
	}
	hashkey := xxHasher64.Sum64()
	cell := (*HashTable)(t).Lookup(hashkey)
	if cell == nil {
		return Val_t{}, false
	}
	return cell.Value, true
}