📅  最后修改于: 2023-12-03 15:01:00.011000             🧑  作者: Mango
在编程中,有时需要统计列表中不同元素的个数。Go语言提供了简单而又高效的方法来实现这个功能。
我们可以使用map来记录每个元素出现的次数,然后统计不同元素的个数。以下是相关代码片段:
func countDistinctElements(list []int) int {
elementCount := make(map[int]int)
for _, element := range list {
elementCount[element]++
}
return len(elementCount)
}
在这个函数中,我们首先使用make函数创建了一个空的int-int的map变量elementCount来统计元素出现的次数。接着,我们遍历给定的列表list中的每个元素,逐个将它们作为键,将对应的值加1。最后,我们返回统计到的不同元素的个数,即elementCount的长度。
另一个方法是使用set数据结构。和map不同的是,set只存储不同的元素。我们可以在遍历列表时将每个元素加入到set中,最后返回set的大小即可。以下是相关代码片段:
type empty struct{}
var exists empty
func countDistinctElements(list []int) int {
elementSet := make(map[int]empty)
for _, element := range list {
elementSet[element] = exists
}
return len(elementSet)
}
在这里,我们定义了一个空的结构体类型empty来作为set元素的类型,并用exists变量来代表一个存在的空结构体。接着,我们使用make函数创建了一个空的int-empty的map变量elementSet作为set。在遍历列表时,我们逐个将元素加入到set中,并为每个元素创建一个对应的空元素。最后,我们返回set的大小。
以上两种方法都可以实现统计列表中不同元素的个数。如果需要频繁统计不同元素的个数,我们建议采用第二种方法实现,因为set比map更高效。