Go 语言程序:从哈希集合获取哈希元素作为排序数组
在 Go 语言中,我们可以使用迭代、sort 包以及切片函数从哈希集合获取哈希元素作为排序数组。
哈希集合包含一个哈希映射,用于以键值对的形式存储项目。哈希映射使用哈希函数实现。
语法
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 中,使用映射字面量创建哈希映射,其键类型为字符串,值类型为整数。
步骤 4 - 然后,使用 make 作为内置函数创建键切片,类似于哈希映射的长度。
步骤 5 - 迭代哈希映射并将它的键追加到切片中。
步骤 6 - 然后,使用 sort 包中的 Strings 函数对键切片进行排序。
步骤 7 - 在控制台上打印排序后的切片。
步骤 8 - 打印语句使用 fmt 包中的 Println 函数执行,其中 ln 表示换行。
示例 1
在此示例中,我们将创建一个键类型为字符串,值类型为整数的哈希映射。然后,将创建与哈希映射长度相似的键切片。迭代哈希映射并将哈希映射的键添加到键切片中。
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
在此示例中,将使用映射字面量创建哈希映射。使用 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 函数。所有示例都返回排序后的数组。