有序集合

type Iterator

  1. func (iterator *Iterator) Begin() // 将迭代器重置为初始状态,然后调用Next获取第一个元素
  2. func (iterator *Iterator) End() // 将迭代器移过最后一个元素,然后调用Prev获取最后一个元素
  3. // 将迭代器移动到第一个元素,如果容器中有第一个元素则返回true。
  4. // 如果First()返回true,则可以通过index()和value()检索第一个元素的索引和值。修改迭代器的状态
  5. func (iterator *Iterator) First() bool
  6. // 将迭代器移动到最后元素,如果容器中有第一个元素则返回true。
  7. // 如果Last()返回true,则可以通过index()和value()检索第一个元素的索引和值。修改迭代器的状态
  8. func (iterator *Iterator) Last() bool
  9. func (iterator *Iterator) Next() bool
  10. func (iterator *Iterator) Prev() bool
  11. func (iterator *Iterator) Index() int
  12. func (iterator *Iterator) Value() interface{}

type Set

  1. func New(values ...interface{}) *Set
  2. func (set *Set) Add(items ...interface{})
  3. // 将集合中的每个元素传递给给定的函数,如果函数对所有元素都返回true,则返回true
  4. func (set *Set) All(f func(index int, value interface{}) bool) bool
  5. // 将集合中的每个元素传递给给定的函数,如果函数对任何元素返回true,则返回true
  6. func (set *Set) Any(f func(index int, value interface{}) bool) bool
  7. func (set *Set) Clear()
  8. func (set *Set) Contains(items ...interface{}) bool
  9. func (set *Set) Each(f func(index int, value interface{}))
  10. func (set *Set) Empty() bool
  11. // 将容器中的每个元素传递给给定的函数,并返回函数为true或-1的第一个元素(索引,值)
  12. // 如果没有元素符合条件,则返回nil
  13. func (set *Set) Find(f func(index int, value interface{}) bool) (int, interface{})
  14. func (set *Set) FromJSON(data []byte) error
  15. func (set *Set) Iterator() Iterator
  16. // 为每个元素调用给定函数一次,并返回一个包含给定函数返回值的容器
  17. func (set *Set) Map(f func(index int, value interface{}) interface{}) *Set
  18. func (set *Set) Remove(items ...interface{})
  19. // 返回一个新容器,其中包含给定函数返回真值的所有元素
  20. func (set *Set) Select(f func(index int, value interface{}) bool) *Set
  21. func (set *Set) Size() int
  22. func (set *Set) String() string
  23. func (set *Set) ToJSON() ([]byte, error)
  24. func (set *Set) Values() []interface{}

例子

  1. package main
  2. import "github.com/emirpasic/gods/sets/linkedhashset"
  3. // LinkedHashSetExample to demonstrate basic usage of LinkedHashSet
  4. func main() {
  5. set := linkedhashset.New() // empty
  6. set.Add(5) // 5
  7. set.Add(4, 4, 3, 2, 1) // 5, 4, 3, 2, 1 (in insertion-order, duplicates ignored)
  8. set.Remove(4) // 5, 3, 2, 1 (in insertion-order)
  9. set.Remove(2, 3) // 5, 1 (in insertion-order)
  10. set.Contains(1) // true
  11. set.Contains(1, 5) // true
  12. set.Contains(1, 6) // false
  13. _ = set.Values() // []int{5, 1} (in insertion-order)
  14. set.Clear() // empty
  15. set.Empty() // true
  16. set.Size() // 0
  17. }