diff --git a/gostd/container/hashset.go b/gostd/container/hashset.go deleted file mode 100644 index 4be5a7ff1d2944361d3307e06157e1e81df1d8d6..0000000000000000000000000000000000000000 --- a/gostd/container/hashset.go +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package container - -import ( - "fmt" - "strings" -) - -var itemExists = struct{}{} - -type HashSet struct { - Items map[interface{}]struct{} -} - -func NewSet(values ...interface{}) *HashSet { - set := &HashSet{Items: make(map[interface{}]struct{})} - if len(values) > 0 { - set.Add(values...) - } - return set -} - -func (set *HashSet) Add(items ...interface{}) { - for _, item := range items { - set.Items[item] = itemExists - } -} - -func (set *HashSet) Remove(items ...interface{}) { - for _, item := range items { - delete(set.Items, item) - } -} - -func (set *HashSet) Contains(items ...interface{}) bool { - for _, item := range items { - if _, contains := set.Items[item]; !contains { - return false - } - } - return true -} -func (set *HashSet) Empty() bool { - return set.Size() == 0 -} -func (set *HashSet) Size() int { - return len(set.Items) -} - -func (set *HashSet) Clear() { - set.Items = make(map[interface{}]struct{}) -} - -func (set *HashSet) Values() []interface{} { - values := make([]interface{}, set.Size()) - count := 0 - for item := range set.Items { - values[count] = item - count++ - } - return values -} -func (set *HashSet) String() string { - str := "HashSet\n" - var items []string - for k := range set.Items { - items = append(items, fmt.Sprintf("%v", k)) - } - str += strings.Join(items, ", ") - return str -} diff --git a/gostd/container/hashset_test.go b/gostd/container/hashset_test.go deleted file mode 100644 index 5b371a08e1241ca895c5cd725a9fb13f9d3184bd..0000000000000000000000000000000000000000 --- a/gostd/container/hashset_test.go +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package container - -import "testing" - -func TestSetNew(t *testing.T) { - set := NewSet(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 := NewSet() - set.Add() - set.Add(1) - set.Add(2) - set.Add(2, 3) - set.Add() - if actualValue := set.Empty(); actualValue != false { - t.Errorf("Got %v expected %v", actualValue, false) - } - if actualValue := set.Size(); actualValue != 3 { - t.Errorf("Got %v expected %v", actualValue, 3) - } -} - -func TestSetContains(t *testing.T) { - set := NewSet() - set.Add(3, 1, 2) - set.Add(2, 3) - set.Add() - if actualValue := set.Contains(); actualValue != true { - t.Errorf("Got %v expected %v", actualValue, true) - } - if actualValue := set.Contains(1); actualValue != true { - t.Errorf("Got %v expected %v", actualValue, true) - } - if actualValue := set.Contains(1, 2, 3); actualValue != true { - t.Errorf("Got %v expected %v", actualValue, true) - } - if actualValue := set.Contains(1, 2, 3, 4); actualValue != false { - t.Errorf("Got %v expected %v", actualValue, false) - } -} - -func TestSetRemove(t *testing.T) { - set := NewSet() - set.Add(3, 1, 2) - set.Remove() - if actualValue := set.Size(); actualValue != 3 { - t.Errorf("Got %v expected %v", actualValue, 3) - } - set.Remove(1) - if actualValue := set.Size(); actualValue != 2 { - t.Errorf("Got %v expected %v", actualValue, 2) - } - set.Remove(3) - set.Remove(3) - set.Remove() - set.Remove(2) - if actualValue := set.Size(); actualValue != 0 { - t.Errorf("Got %v expected %v", actualValue, 0) - } -} - -func benchmarkContains(b *testing.B, set *HashSet, size int) { - for i := 0; i < b.N; i++ { - for n := 0; n < size; n++ { - set.Contains(n) - } - } -} - -func benchmarkAdd(b *testing.B, set *HashSet, size int) { - for i := 0; i < b.N; i++ { - for n := 0; n < size; n++ { - set.Add(n) - } - } -} - -func benchmarkRemove(b *testing.B, set *HashSet, size int) { - for i := 0; i < b.N; i++ { - for n := 0; n < size; n++ { - set.Remove(n) - } - } -} - -func BenchmarkHashSetContains100(b *testing.B) { - b.StopTimer() - size := 100 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkContains(b, set, size) -} - -func BenchmarkHashSetContains1000(b *testing.B) { - b.StopTimer() - size := 1000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkContains(b, set, size) -} - -func BenchmarkHashSetContains10000(b *testing.B) { - b.StopTimer() - size := 10000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkContains(b, set, size) -} - -func BenchmarkHashSetContains100000(b *testing.B) { - b.StopTimer() - size := 100000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkContains(b, set, size) -} - -func BenchmarkHashSetAdd100(b *testing.B) { - b.StopTimer() - size := 100 - set := NewSet() - b.StartTimer() - benchmarkAdd(b, set, size) -} - -func BenchmarkHashSetAdd1000(b *testing.B) { - b.StopTimer() - size := 1000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkAdd(b, set, size) -} - -func BenchmarkHashSetAdd10000(b *testing.B) { - b.StopTimer() - size := 10000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkAdd(b, set, size) -} - -func BenchmarkHashSetAdd100000(b *testing.B) { - b.StopTimer() - size := 100000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkAdd(b, set, size) -} - -func BenchmarkHashSetRemove100(b *testing.B) { - b.StopTimer() - size := 100 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkRemove(b, set, size) -} - -func BenchmarkHashSetRemove1000(b *testing.B) { - b.StopTimer() - size := 1000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkRemove(b, set, size) -} - -func BenchmarkHashSetRemove10000(b *testing.B) { - b.StopTimer() - size := 10000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkRemove(b, set, size) -} - -func BenchmarkHashSetRemove100000(b *testing.B) { - b.StopTimer() - size := 100000 - set := NewSet() - for n := 0; n < size; n++ { - set.Add(n) - } - b.StartTimer() - benchmarkRemove(b, set, size) -}