golang中set数据结构如何使用
周白芷 2023-09-14编程经验
什么是set数据结构set是一种存储唯一值的数据结构,也叫做集合。它内部的元素是无序的,且不允许重复。在golang中,set通常使用map来实现,map中的key存储元素
什么是set数据结构
set是一种存储唯一值的数据结构,也叫做集合。它内部的元素是无序的,且不允许重复。在golang中,set通常使用map来实现,map中的key存储元素的值,value则固定为bool类型。
// 定义一个set set := make(map[string]bool) // 添加元素 set["a"] = true set["b"] = true set["c"] = true // 判断元素是否存在 if set["a"] { fmt.Println("a exists") }
set的基本操作
set的基本操作包括添加元素、删除元素、判断元素是否存在、获取set的长度等。
// 添加元素 set := make(map[string]bool) set["a"] = true // 删除元素 delete(set, "a") // 判断元素是否存在 if set["a"] { fmt.Println("a exists") } // 获取set的长度 len := len(set) fmt.Printf("set length : %d", len)
set的遍历
遍历set可以使用for range循环,遍历时返回的是set中的key值。如果需要获取value值,需要使用下标访问。
set := make(map[string]bool) set["a"] = true set["b"] = true set["c"] = true for key := range set { fmt.Println("key : ", key) value := set[key] fmt.Println("value : ", value) }
set的应用场景
set通常用于需要去重的场景,比如黑名单、白名单、去重计数等。
// 去重计数 list := []string{"a", "b", "c", "a", "d", "e", "b"} counter := make(map[string]int) for _, item := range list { // 如果元素不存在,添加元素并计数为1 if _, ok := counter[item]; !ok { counter[item] = 1 } else { // 如果元素已存在,计数加1 counter[item]++ } } // 输出计数结果 for key, value := range counter { fmt.Println("key : ", key, ", count : ", value) }
总结
set是一种非常常见的数据结构,通过map实现可以实现高效的去重操作。在golang中,可以使用map加bool类型的value来实现set。set的基本操作包括添加元素、删除元素、判断元素是否存在、获取set的长度等。set可以与for range循环一起使用进行遍历。在实际应用中,set通常用于需要去重的场景,比如黑名单、白名单、去重计数等。
很赞哦! ()