GoFrame gset使用实践 | 交差并补集

简介: 今天继续分享gset的更多知识点。

场景


交差并补集有非常多的应用场景,合理的使用交差并补集能减少我们的DB查询次数。


方法介绍


Intersect: 交集


交集,属于set且属于others的元素为元素的集合。


func (set *Set) Intersect(others ...*Set) (newSet *Set)


Diff: 差集


Diff: 差集,属于set且不属于others的元素为元素的集合。


func (set *Set) Diff(others ...*Set) (newSet *Set)


Union: 并集


Union: 并集,属于set或属于others的元素为元素的集合。


func (set *Set) Union(others ...*Set) (newSet *Set)


Complement: 补集


Complement: 补集,(前提: set应当为full的子集)属于全集full不属于集合set的元素组成的集合。如果给定的full集合不是set的全集时,返回full与set的差集。


func (set *Set) Complement(full *Set) (newSet *Set)


注意:通过集合方法中的...我们可以发现,交差并集方法支持多个集合参数进行计算。


举例


package main
import (
   "fmt"
   "github.com/gogf/gf/container/gset"
)
func main() {
   s1 := gset.NewFrom([]interface{}{1, 2, 3})
   s2 := gset.NewFrom([]interface{}{4, 5, 6})
   s3 := gset.NewFrom([]interface{}{1, 2, 3, 4, 5, 6, 7})
   fmt.Println("s1和s3的交集:", s1.Intersect(s3)) //s1和s3的交集:"[1,2,3]"
   fmt.Println("s1和s2的差集:", s1.Diff(s2)) //s1和s2的差集:"[2,3,1]"
   fmt.Println("s1和s2的并集:", s1.Union(s2)) //s1和s2的并集:"[3,1,4,5,6,2]"
   fmt.Println("s1和s3的补集:", s1.Complement(s3)) //s1和s3的补集:"[4,5,6,7]"
}


打印结果


微信图片_20221112224828.jpg


总结


通过这篇文章我们了解到gset数据结构交差并补集的基本使用

交差并集方法是支持多个集合参数进行计算的

合理使用交差并补集能较少DB查询次数,提高程序整体响应速度。

相关文章
十大排序引出的问题()
十大排序引出的问题()
48 0
|
Java
【JAVA数据结构】Java排序(七大排序 + 动图代码解析)
排序有很多种,一般以主流升序或者降序为主(不包含特殊的排序序列)【这里讲解都是升序且是整形,其他类型以此类推,改个符号和比较方法就好】
222 1
|
机器学习/深度学习 开发框架 .NET
表达式树练习实践:入门基础
表达式树练习实践:入门基础
133 0
表达式树练习实践:入门基础
|
存储 搜索推荐 算法
Java实现八大排序
Java实现八大排序
|
存储 Java 编译器
Java集合探秘:从单列到双列,探索全部集合框架的奥秘
Java集合探秘:从单列到双列,探索全部集合框架的奥秘
Java集合探秘:从单列到双列,探索全部集合框架的奥秘
|
搜索推荐
|
10月前
|
算法 程序员
八大排序源码(含优化)
八大排序源码(含优化)