Golang 从哈希集合获取哈希元素的排序数组
在Golang中,我们可以使用迭代,排序包以及切片函数从哈希集合中获取哈希元素的排序数组。
哈希集合包含一个哈希映射,用于以键值对的形式存储项。哈希映射是使用哈希函数实现的。
语法
func make ([] type, size, capacity)
在Go语言中,make函数用于创建数组/映射,它接受要创建的变量的类型、大小和容量作为参数。
func append(slice, element_1, element_2…, element_N) []T
append函数用于将值添加到一个数组切片中。它接受多个参数。第一个参数是我们希望添加值的数组,后面是要添加的值。函数返回包含所有值的最终的数组切片。
funcStrings(src []string) []string
strings函数定义在sort包中。这个函数接受我们希望进行排序的字符串格式的数组,并通过对该数组进行排序返回结果。
sort.Slice()
这个函数是 sort 包的一部分。 用于对整数切片进行排序。 它接受两个参数:要排序的切片和一个返回布尔值的函数。
func range(variable)
range 函数用于迭代任何数据类型。要使用此函数,我们首先要写上 range 关键字,后面跟随我们要迭代的数据类型,循环会迭代到变量的最后一个元素为止。
步骤
- 步骤 1 - 此程序导入两个包 fmt、main 和 sort 包,其中 fmt 用于输入和输出的格式化,main 用于生成可执行代码。
-
步骤 2 - 创建一个 main 函数。
-
步骤 3 - 在 main 函数中,使用 map 字面量创建一个 hashmap,键的类型为 string,值的类型为 int。
-
步骤 4 - 然后,使用内置函数 make 创建一个与 hashmap 长度相似的 keys 切片。
-
步骤 5 - 迭代 hashmap,并将其键添加到切片中。
-
步骤 6 - 然后,使用 sort 包中的 Strings 函数对 keys 切片进行排序。
-
步骤 7 - 在控制台上打印排序后的切片。
-
步骤 8 - 使用 fmt 包中的 Println 函数执行打印语句,ln 代表换行。
示例1
在这个示例中,我们将创建一个键的类型为 string,值的类型为 int 的 hashmap。然后,创建一个与 hashmap 长度相似的 keys 切片。迭代 hashmap,并将 hashmap 的键添加到 keys 切片中。
package main
import (
"fmt"
"sort"
)
func main() {
hashmap := map[string]int{
"noodles": 110,
"momos": 80,
"pizza": 190,
"burger": 50,
}
keys := make([]string, 0, len(hashmap))
for k := range hashmap {
keys = append(keys, k)
}
sort.Strings(keys)
fmt.Println("The sorted array is given as:")
fmt.Println(keys)
}
输出
The sorted array is given as:
[burger momos noodles pizza]
示例2
在这个示例中,将使用 map 字面量创建一个 hashmap。使用 sort 包中的 Strings 函数对切片中的键进行排序。最后,在终端打印出排序后的数组。
package main
import (
"fmt"
"sort"
)
func main() {
hashmap := map[string]int{
"noodles": 110,
"momos": 60,
"pizza": 250,
"pasta": 80,
}
keys := make([]string, len(hashmap))
i := 0
for k := range hashmap {
keys[i] = k
i++
}
sort.Strings(keys) //sort the array
fmt.Println("The sorted array is given as:")
fmt.Println(keys)
}
输出
The sorted array is given as:
[momos noodles pasta pizza]
示例3
在这个示例中,我们将创建一个哈希映射,并使用sort包中的Slice函数来对新的切片中的键进行排序。排序后的数组将打印在控制台上。
package main
import (
"fmt"
"sort"
)
func main() {
hashmap := map[string]int{
"noodles": 110,
"pasta": 60,
"pizza": 290,
"momos": 40,
}
keys := make([]string, 0, len(hashmap))
for k := range hashmap {
keys = append(keys, k)
}
sort.Slice(keys, func(i, j int) bool {
return keys[i] < keys[j]
})
fmt.Println("The sorted array is given as:")
fmt.Println(keys)
}
输出
The sorted array is given as:
[momos noodles pasta pizza]
结论
我们编写并执行了以排序数组形式获取哈希元素的程序。在第一个示例中,我们使用了sort包中的Strings函数;在第二个示例中,我们在循环中使用了一个索引变量和类似的Strings函数;在第三个示例中,我们使用了sort包中的Slice函数。所有示例都返回了排序后的数组。