广告
返回顶部
首页 > 资讯 > 后端开发 > GO >怎么在golang中对slice元素去重
  • 571
分享到

怎么在golang中对slice元素去重

2023-06-14 22:06:36 571人浏览 独家记忆
摘要

怎么在golang中对slice元素去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Golanggolang 是Google开发的一种静态强类型、编译型

怎么在golang中对slice元素去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

什么是Golang

golang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其语法与 C语言相近,但并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能。

1. 通过双重循环来过滤重复元素(时间换空间)

// 通过两重循环过滤重复元素func RemoveRepByLoop(slc []int) []int {    result := []int{}  // 存放结果    for i := range slc{        flag := true        for j := range result{            if slc[i] == result[j] {                flag = false  // 存在重复元素,标识为false                break            }        }        if flag {  // 标识为false,不添加进结果            result = append(result, slc[i])        }    }    return result}

2. 通过字典来过滤(空间换时间)

因为字典的主键唯一,所以可以用来判断元素是否重复

// 通过map主键唯一的特性过滤重复元素func RemoveRepByMap(slc []int) []int {    result := []int{}    tempMap := map[int]byte{}  // 存放不重复主键    for _, e := range slc{        l := len(tempMap)        tempMap[e] = 0        if len(tempMap) != l{  // 加入map后,map长度变化,则元素不重复            result = append(result, e)        }    }    return result}

ps : 这里为了节省内存,使用map[int]byte。 因为map的value并没有用到,所以什么类型都可以。

效率第一,如果节省计算时间,则可以采用如下方式

// 元素去重func RemoveRep(slc []int) []int{    if len(slc) < 1024 {        // 切片长度小于1024的时候,循环来过滤        return RemoveRepByLoop(slc)    }else{        // 大于的时候,通过map来过滤        return RemoveRepByMap(slc)    }}

ps:1024 这个数字不是特别精准,我是使用go test 的基准测试,手工的比较的。

大约在这个数量超上,使用map方式的速度要快,小于这个数量级后,loop方式要快,而且省内存。

补充:Golang数组去重&切片去重

方法一:

定义一个新切片(数组),存放原数组的第一个元素,然后将新切片(数组)与原切片(数组)的元素一一对比,如果不同则存放在新切片(数组)中。

package mainimport "fmt"func main() {    var arr = []string{"hello", "hi", "world", "hi", "china", "hello", "hi"}    fmt.Println(RemoveRepeatedElement(arr))}func RemoveRepeatedElement(arr []string) (newArr []string) {    newArr = make([]string, 0)    for i := 0; i < len(arr); i++ {        repeat := false        for j := i + 1; j < len(arr); j++ {            if arr[i] == arr[j] {                repeat = true                break            }        }        if !repeat {            newArr = append(newArr, arr[i])        }    }    return}

方法二:

先将原切片(数组)进行排序,在将相邻的元素进行比较,如果不同则存放在新切片(数组)中。

package mainimport "fmt"func main() {    var arr = []string{"hello", "hi", "world", "hi", "china", "hello", "hi"}    fmt.Println(RemoveRepeatedElement(arr))}func RemoveRepeatedElement(arr []string) (newArr []string) {    newArr = make([]string, 0)    sort.Strings(arr)    for i := 0; i < len(arr); i++ {        repeat := false        for j := i + 1; j < len(arr); j++ {            if arr[i] == arr[j] {                repeat = true                break            }        }        if !repeat {            newArr = append(newArr, arr[i])        }    }    return}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网GO频道,感谢您对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么在golang中对slice元素去重

本文链接: https://www.lsjlt.com/news/275648.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在golang中对slice元素去重
    怎么在golang中对slice元素去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译型...
    99+
    2023-06-14
  • golang slice元素去重操作
    合并两个整型切片,返回没有重复元素的切片,有两种去重策略 1. 通过双重循环来过滤重复元素(时间换空间) // 通过两重循环过滤重复元素 func RemoveRepByLoop...
    99+
    2022-11-12
  • Golang中怎么删除slice元素
    本文小编为大家详细介绍“Golang中怎么删除slice元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang中怎么删除slice元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一. 什么是slice...
    99+
    2023-07-05
  • Golang中slice删除元素的性能对比
    目录我的电脑配置:直接上代码:Benchmark结果:解释:总结在我写的blog中,这个算是参与度比较高的,所以有必要把程序写的更加容易理解一些。 我的电脑配置: ☁  b...
    99+
    2022-11-13
  • Golang中slice删除元素的性能实例对比分析
    本篇内容主要讲解“Golang中slice删除元素的性能实例对比分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang中slice删除元素的性能实例对比分析”吧!我的电脑配置:☁ &nb...
    99+
    2023-07-02
  • php怎么去掉重复元素
    本篇内容介绍了“php怎么去掉重复元素”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php去掉重复元素的方法是,使用array_unique...
    99+
    2023-06-20
  • JavaScript中怎么去掉array重复元素
    JavaScript中怎么去掉array重复元素,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Filterfilter是一个常用的操作,它...
    99+
    2022-10-19
  • 怎么在Golang对Array和Slice进行拷贝
    怎么在Golang对Array和Slice进行拷贝?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。golang的优点golang是一种编译语言,可以将代码编译为机器代码,编译...
    99+
    2023-06-14
  • 怎么在python中对list去重
    这篇文章给大家介绍怎么在python中对list去重,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写...
    99+
    2023-06-14
  • python怎么去除列表中的重复元素
    可以使用set()函数将列表转换为集合,再将集合转换为列表,即可去除列表中的重复元素。具体代码如下:```python# 原始列表l...
    99+
    2023-09-23
    python
  • 怎么在postgresql中对数据去重
    在postgresql中对数据进行去重的方法:1.启动postgresql服务;2.登录postgresql数据库;3.使用数据库;4.在数据库创建表并插入数据;5.查询表中重复的数据;6.执行命令删除重复数据;具体步骤如下:首先,在命令行...
    99+
    2022-10-25
  • 怎么在java中对数组去重
    怎么在java中对数组去重?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理...
    99+
    2023-06-14
  • java中怎么去掉List集合中重复的元素
    本篇内容介绍了“java中怎么去掉List集合中重复的元素”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&...
    99+
    2022-10-19
  • 怎么在JavaScript中对象数组去重
    怎么在JavaScript中对象数组去重?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JavaScript有什么特点1、js属于一种解释性脚本语言;2、在绝大多数浏览器的支...
    99+
    2023-06-14
  • php中两个数组怎么去掉重复的元素
    本文操作环境:windows7系统、PHP7.1版、Dell G3电脑。php中两个数组怎么去掉重复的元素?PHP删除两个数组中相同的元素:代码如下:<php $invite1 = '18,19,20,21,22';...
    99+
    2015-02-20
    php
  • php数组怎么去除重复和空元素
    实现步骤:1、使用array_unique()函数去除原数组中的重复元素,语法“array_unique(原数组)”,会返回一个去重数组;2、使用array_filter()函数过滤去重数组,删除去重数组中的空元素即可,语法“array_f...
    99+
    2022-06-28
    php php数组
  • 怎么在java8项目中对List对象属性去重
    怎么在java8项目中对List对象属性去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第一种: 不使用java8 private Lis...
    99+
    2023-06-14
  • golang中怎么用map删除元素
    在Golang中,可以使用`delete`函数来删除map中的元素。`delete`函数接受两个参数,第一个参数是要删除元素的map...
    99+
    2023-10-26
    golang
  • matlab怎么去除cell中的空元素
    你可以使用`cellfun`函数结合匿名函数来实现去除cell中的空元素。以下是一个示例代码:```matlab% 创建一个包含空元...
    99+
    2023-08-19
    matlab
  • Golang怎么删除数组中的元素
    Golang可以通过创建一个新的切片的方法来删除数组中的元素。详细介绍:1、判断索引是否越界;2、创建一个新的切片;3、拷贝删除元素后的数据到新的切;4、创建一个数组;5、删除索引为2的元素;6、输出结果即可。本教程操作系统:windows...
    99+
    2023-12-12
    go语言 Golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作