mirror of
https://github.com/emirpasic/gods
synced 2024-11-16 12:12:59 +00:00
Sets bulk intialization
This commit is contained in:
parent
555738833b
commit
bc82528e1e
@ -26,9 +26,13 @@ type Set struct {
|
||||
|
||||
var itemExists = struct{}{}
|
||||
|
||||
// New instantiates a new empty set
|
||||
func New() *Set {
|
||||
return &Set{items: make(map[interface{}]struct{})}
|
||||
// New instantiates a new empty set and adds the passed values, if any, to the set
|
||||
func New(values ...interface{}) *Set {
|
||||
set := &Set{items: make(map[interface{}]struct{})}
|
||||
if len(values) > 0 {
|
||||
set.Add(values...)
|
||||
}
|
||||
return set
|
||||
}
|
||||
|
||||
// Add adds the items (one or more) to the set.
|
||||
|
@ -8,6 +8,23 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSetNew(t *testing.T) {
|
||||
set := New(2, 1)
|
||||
|
||||
if actualValue := set.Size(); actualValue != 2 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 2)
|
||||
}
|
||||
if actualValue := set.Contains(1); actualValue != true {
|
||||
t.Errorf("Got %v expected %v", actualValue, true)
|
||||
}
|
||||
if actualValue := set.Contains(2); actualValue != true {
|
||||
t.Errorf("Got %v expected %v", actualValue, true)
|
||||
}
|
||||
if actualValue := set.Contains(3); actualValue != false {
|
||||
t.Errorf("Got %v expected %v", actualValue, true)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetAdd(t *testing.T) {
|
||||
set := New()
|
||||
set.Add()
|
||||
|
@ -30,12 +30,16 @@ type Set struct {
|
||||
|
||||
var itemExists = struct{}{}
|
||||
|
||||
// New instantiates a new empty set
|
||||
func New() *Set {
|
||||
return &Set{
|
||||
// New instantiates a new empty set and adds the passed values, if any, to the set
|
||||
func New(values ...interface{}) *Set {
|
||||
set := &Set{
|
||||
items: make(map[interface{}]struct{}),
|
||||
list: doublylinkedlist.New(),
|
||||
}
|
||||
if len(values) > 0 {
|
||||
set.Add(values...)
|
||||
}
|
||||
return set
|
||||
}
|
||||
|
||||
// Add adds the items (one or more) to the set.
|
||||
|
@ -9,6 +9,20 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSetNew(t *testing.T) {
|
||||
set := New(2, 1)
|
||||
if actualValue := set.Size(); actualValue != 2 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 2)
|
||||
}
|
||||
values := set.Values()
|
||||
if actualValue := values[0]; actualValue != 2 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 2)
|
||||
}
|
||||
if actualValue := values[1]; actualValue != 1 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 1)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetAdd(t *testing.T) {
|
||||
set := New()
|
||||
set.Add()
|
||||
|
@ -29,18 +29,30 @@ type Set struct {
|
||||
var itemExists = struct{}{}
|
||||
|
||||
// NewWith instantiates a new empty set with the custom comparator.
|
||||
func NewWith(comparator utils.Comparator) *Set {
|
||||
return &Set{tree: rbt.NewWith(comparator)}
|
||||
func NewWith(comparator utils.Comparator, values ...interface{}) *Set {
|
||||
set := &Set{tree: rbt.NewWith(comparator)}
|
||||
if len(values) > 0 {
|
||||
set.Add(values...)
|
||||
}
|
||||
return set
|
||||
}
|
||||
|
||||
// NewWithIntComparator instantiates a new empty set with the IntComparator, i.e. keys are of type int.
|
||||
func NewWithIntComparator() *Set {
|
||||
return &Set{tree: rbt.NewWithIntComparator()}
|
||||
func NewWithIntComparator(values ...interface{}) *Set {
|
||||
set := &Set{tree: rbt.NewWithIntComparator()}
|
||||
if len(values) > 0 {
|
||||
set.Add(values...)
|
||||
}
|
||||
return set
|
||||
}
|
||||
|
||||
// NewWithStringComparator instantiates a new empty set with the StringComparator, i.e. keys are of type string.
|
||||
func NewWithStringComparator() *Set {
|
||||
return &Set{tree: rbt.NewWithStringComparator()}
|
||||
func NewWithStringComparator(values ...interface{}) *Set {
|
||||
set := &Set{tree: rbt.NewWithStringComparator()}
|
||||
if len(values) > 0 {
|
||||
set.Add(values...)
|
||||
}
|
||||
return set
|
||||
}
|
||||
|
||||
// Add adds the items (one or more) to the set.
|
||||
|
@ -9,6 +9,20 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSetNew(t *testing.T) {
|
||||
set := NewWithIntComparator(2, 1)
|
||||
if actualValue := set.Size(); actualValue != 2 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 2)
|
||||
}
|
||||
values := set.Values()
|
||||
if actualValue := values[0]; actualValue != 1 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 1)
|
||||
}
|
||||
if actualValue := values[1]; actualValue != 2 {
|
||||
t.Errorf("Got %v expected %v", actualValue, 2)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetAdd(t *testing.T) {
|
||||
set := NewWithIntComparator()
|
||||
set.Add()
|
||||
|
Loading…
Reference in New Issue
Block a user