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 函数。所有示例都返回排序后的数组。

更新于: 2023年5月3日

261 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告