NOTE

2.5 set

1. 是什么 - 无序、不重复的集合 1.1. 数据结构 - hashmap 1.2. API 1.3. 实现 1.3.1. 测试

Data Structures & Algorithms创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 是什么

  • 无序、不重复的集合

1.1. 数据结构

  • hashmap

1.2. API

type ISet interface {
	//打印set
	String() string
	//set中元素个数
	Length() int
	//set是否为空
	IsEmpty() bool
	//set中添加一个元素
	Add(data model.Comparable)
	//set中删除一个元素
	Remove(data model.Comparable)
	//set是否包含一个元素
	Contains(data model.Comparable) bool
}

1.3. 实现


type Set struct {
	m _map.IMap
}

func NewBstSet() *Set {
	return &Set{m: _map.NewBstMap()}
}

func (b *Set) String() string {
	return b.m.String()
}

func (b *Set) Length() int {
	return b.m.Length()
}

func (b *Set) IsEmpty() bool {
	return b.m.IsEmpty()
}

func (b *Set) Add(data model.Comparable) {
	b.m.Add(data, nil)
}

func (b *Set) Remove(data model.Comparable) {
	b.m.Remove(data)
}

func (b *Set) Contains(data model.Comparable) bool {
	return b.m.Contains(data)
}

1.3.1. 测试

func TestBstSet(t *testing.T) {
	set := NewBstSet()
	fmt.Println("初始set:",set)

	e1 := model.NewElement(1)
	e2 := model.NewElement(2)
	e3 := model.NewElement(3)
	e4 := model.NewElement(4)
	e5 := model.NewElement(5)
	set.Add(e1)
	set.Add(e2)
	set.Add(e3)
	set.Add(e4)
	set.Add(e5)
	set.Add(e5)

	fmt.Println("添加元素后的set:",set)
	fmt.Println("是否包含e1:", set.Contains(e1))

	set.Remove(e1)
	fmt.Println("删除e1后的set:", set)


}