从 Kotlin 中的数组中删除重复项

Kotlin中的集合函数 本文会介绍一些 Kotlin 集合函数,这些函数可以极大地提高我们的开发效率,可以作为小抄随时翻阅~ 阅读详情
AI摘要

本文介绍Kotlin中去除数组重复元素的方法,包括使用distinct(), toSet(), toMutableSet(), toHashSet()等函数,并通过示例详细说明每种方法的特点。

在这篇文章中,我们将学习如何在 Kotlin 中从数组中删除重复项。由于在 Kotlin 中有很多方法可以从数组中删除重复项,因此我们可以根据用例决定使用哪一种。

我们可以使用以下任何函数从 Kotlin 中的数组中删除重复项:

  • distinct()
  • toSet()
  • toMutableSet()
  • toHashSet()

让我们开始一个一个例子来学习。

考虑如下data类Mentor:

data class Mentor(val id: Int, val name: String)

并且,array一个Mentor:

val mentors = arrayOf(
    Mentor(1, "Amit Shekhar"),
    Mentor(2, "Anand Gaurav"),
    Mentor(1, "Amit Shekhar"),
    Mentor(3, "Lionel Messi"))

使用删除重复项distinct()

在 Kotlin 中,我们可以使用distinct()Collection 函数中可用的函数来删除重复项。

val distinct = mentors.distinct()
println(distinct)

这将打印以下内容:

[Mentor(id=1, name=Amit Shekhar),
Mentor(id=2, name=Anand Gaurav),
Mentor(id=3, name=Lionel Messi)]

笔记:

  • 保持物品的原始顺序。
  • 在给定数组的相等元素中,只有第一个元素会出现在输出中。
  • 返回List

在这里,正如我们使用它从数组中删除重复的导师一样,我们可以使用它从数组中删除重复的字符串。

使用删除重复项toSet()

在 Kotlin 中,我们可以使用toSet()Collection 函数中可用的函数来删除重复项。

val toSet = mentors.toSet()
println(toSet)

这将打印以下内容:

[Mentor(id=1, name=Amit Shekhar),
Mentor(id=2, name=Anand Gaurav),
Mentor(id=3, name=Lionel Messi)]

笔记:

  • 保持物品的原始顺序。
  • 返回Set这是一个read-only集合。这意味着我们不能像add在集合上那样执行操作。接下来,我们将查看toMutableSet()哪些返回read/write集。

使用删除重复项toMutableSet()

在 Kotlin 中,我们可以使用toMutableSet()Collection 函数中可用的函数来删除重复项。

val toMutableSet = mentors.toMutableSet()
println(toMutableSet)

这将打印以下内容:

[Mentor(id=1, name=Amit Shekhar),
Mentor(id=2, name=Anand Gaurav),
Mentor(id=3, name=Lionel Messi)]

笔记:

  • 保持物品的原始顺序。
  • 返回MutableSet这是一个read/write集合。这意味着我们可以像add对可变集执行操作。

使用删除重复项toHashSet()

在 Kotlin 中,我们可以使用toHashSet()Collection 函数中可用的函数来删除重复项。

val toHashSet = mentors.toHashSet()
println(toHashSet)

这将打印以下内容:

[Mentor(id=3, name=Lionel Messi),
Mentor(id=1, name=Amit Shekhar),
Mentor(id=2, name=Anand Gaurav)]

笔记:

  • 类似于MutableSet但不保持项目的原始顺序。
  • 返回HashSet

在这里,正如我们使用它从数组中删除重复的导师一样,我们可以使用它从数组中删除任何重复的元素,如字符串、数字等。

因此,我们了解了如何在 Kotlin 中从数组中删除重复项。

现在就是这样。

谢谢

Android与Flutter算法面试全攻略:从KMP到LRU的避坑指南 数据结构与算法是移动开发面试中绕不开的基石,尤其在Android和Flutter岗位的考察中,面试官更看重候选人能否将基础理论灵活应用于工程实践。从数组、链表到二叉树,从哈希表、双指针到排序算法,这些经典知识点不仅出现在白板题中,更渗透在源码机制和渲染流程里。例如KMP字符串匹配如何高效解决文本检索,动态规划怎样优化重叠子问题,LRU缓存策略又如何支撑图片加载框架的内存管理——理解这些原理,才能应对面试官层层递进的追问。移动端算法面的出题逻辑并非追求竞赛级难度,而是围绕高频题型的变形与工程场景的结合。本文复 阅读详情

相关推荐

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1270

kotlin 两个 list 怎么过滤重复数据

在 Kotlin 中,可以通过多种方式来过滤两个列表中的重复数据。

阿饱同学 1893

Python | 集合(set)运算之intersection()

简介 在做力扣题的时候,有一个思路是要求解两个字符串的交集。 一般来说,求解交集的思路是遍历两个字符串,判断有无相等,有相等则添加到交集中,直到循环结束。 但是这样做,会增加很多的不必要的遍历:比如说,当一个字符串中有多个相同的元素时,该元素会被遍历多次。 因此,在求解时,我们可以先将字符串转换为set集合类型。集合中存储的元素没有顺序,且互异(即元素不可重复)。 算例 求字符串m“abcdaaa” 与 字符串n“bcddses”是否存在交集 首先将字符串转换为set类型: m = set(m) n

lovetaozibaby的博客 1万+

Kotlin语言集合学习:List,Set,去重转换

Kotlin语言集合学习:List,Set,去重转换

XXX_17的博客 2531

西门子Simotion运动控制

SIMOTION

rjimhcd的博客 3024

零成本实现飞牛 OS 内网穿透:CloudFlare 隧道搭建全攻略

一、引言:突破内网限制的最优解当你的内网环境中部署了飞牛 OS 系统(无论是老旧电脑还是 NAS 设备),想要实现公网访问时,传统方案往往面临两大痛点:公网 IP 申请困难且成本高DDNS 动态解析配置复杂专业内网穿透工具存在付费门槛今天为大家带来零成本解决方案:通过免费域名搭配 CloudFlare 隧道技术,无需公网 IP 即可轻松实现飞牛 OS 服务的公网访问。全程操作可视化,新手也能快速上手!二、前期准备:必备工具清单(1)域名准备。

Honmaple的博客 7493

List去重的N种方式

/** * LinkedHashSet有个特性:不能添加重复数据并能保证添加顺序 * * @param list */ public static void removeListDuplicate1(List<String> list) { LinkedHashSet<String> set = new L...

iblade的博客 4304

AT32F403A ADC通道管理与转换模式实战解析

本文深入解析AT32F403A微控制器的ADC模块,重点阐述其通道管理机制与四种转换模式(序列模式、抢占自动转换模式、反复模式、分割模式)的实战应用。通过详细的配置步骤与代码示例,帮助开发者高效实现模拟数字转换,优化数据采集性能与系统响应。

sky77的博客 279

Kotlin列表distinct/distinctBy去重

给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin_zhangphil的博客-优快云博客。扁平的MutableList元素每隔若干元素一组装入新MutableList,Kotlin-优快云博客。给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin_zhangphil的博客-优快云博客。扁平的MutableList元素每隔若干元素一组装入新MutableList,Kotlin_kotlin mutablelist3个一组-优快云博客。

Zhang Phil 1191

别再为Power BI瀑布图发愁了!用这个DAX公式+堆积柱状图,5分钟搞定现金流量表可视化

本文介绍了一种使用DAX公式和堆积柱状图快速实现Power BI现金流量表可视化的高效方法。通过详细的步骤和代码示例,帮助财务分析人员5分钟内完成专业级报表制作,解决传统瀑布图配置复杂、灵活性差的问题,显著提升工作效率。

weixin_28677005的博客 247

高通SDX35:SGMII接口PHY RTL8211FSI-CG驱动适配

高通SDX35 RTL8211F SGMII

不秃头的程序猿Gabriel的博客 786

List 去除重复数据的五种方式,舒服~

以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据 1.使用LinkedHashSet删除arraylist中的重复数据 LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字,例如1,3和5.我们将列表添加到

欢迎关注公众号:【码农突围】,公号后台回复9999,可以获取一份500页的LeetCode刷题笔记。 794

ESD防护设计宝典(十九):元器件选型宝典——共模电感

然而,这位“大师”的脾气也颇为古怪,若设计者不解其性、用之不当,它非但不能抑制噪声,反而会引入信号完整性恶化、电源压降等新问题,甚至让您的系统EMC性能“雪上加霜”,导致项目在测试阶段功亏一篑。本文将带您深入共模电感的内在世界,从本质解析到参数详解,从设计陷阱到实战选型,全方位领悟其平衡艺术,掌握其应用核心,规避那些足以让项目翻车的致命陷阱。:这是存在于电路板内部的“家贼”。共模电感实质上是一个四端器件,它通过磁场的“加法”与“减法”运算,巧妙地实现了对共模噪声的抑制,同时为差模信号大开绿灯。

m0_56451176的博客 421

80. 删除有序数组中的重复项 II

题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/ 思路:两个指针,一个表示最终结果的指针(index),一个是表示遍历的指针(i),通过判断最终结果数组中的元素是不是跟当前遍历的元素相等,来判断需不需要加进最终结果中。判断方式:nums[i] != nums[index - 2] 这样判断的原因是,每个元素最多可以出现两次,所以与index-2位置的元素比较即可。 上代码: class Solu

lgz0921的博客 181

FortiWeb 相对路径遍历漏洞复现(CVE-2025-64446)

FortiWeb是Fortinet公司推出的企业级Web应用防火墙(WAF),专为保护Web应用和API抵御高级威胁设计。它集成人工智能与机器学习技术,通过双层检测引擎(HMM模型与SVM向量机)精准识别异常流量,可防御OWASP Top 10攻击、SQL 注入、XSS、DDoS及恶意机器人。其核心功能包括API自动化保护、虚拟补丁集成(兼容Acunetix等第三方扫描工具)及智能流量分析,支持HTTP/2、WebSocket等现代协议。(CVE-2025-64446)

iSee857的博客 467

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

DeepSeek LeetCode 80. 删除有序数组中的重复项 II Kotlin实现

遍历用 for (x in nums) 而非按下标,是因为 nums[k] = x 的写入位置总在读取位置之前(k <= i),不会破坏后续待读元素——实际上这里更准确地说,是 k 始终不超过当前遍历下标,所以写入安全。1 2 nums[0]=1 相等,跳过 [1,1,1,2,2,3] 2。2 2 nums[0]=1 不等 [1,1,2,2,2,3] 2→3。2 3 nums[1]=1 不等 [1,1,2,2,2,3] 3→4。3 4 nums[2]=2 不等 [1,1,2,2,3,3] 4→5。

m0_37843156的博客 50

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用Java+Kotlin双语言的LeetCode刷题之路(三)

BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 14 编写一个函数来查找字符串数组中最长的公共前缀字符串 Java 语言实现 public static String longestCommonPrefix(String[] str...

weixin_33774883的博客 122

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode刷题记录

我是一名Android Developer,这里是我对Leetcode中文网中所出算法题目的解答记录。主要使用Java和Kotlin两种语言完成。题目按照网站中的题目序号排序,每题给出题目解答、相应难度和知识点,关键题目会给出解答思路笔记。由于题目较多,我会一点一点更新起来,欢迎fork和star☆! 很多人讲我们做移动端开发的属于工程范畴,对算法的要求不高。在面试来讲,算法只是一部分不代表全局...

weixin_33682719的博客 175

基于HarmonyOS ArkTS API 24通过new PhotoItem(p)创建一个新的对象并替换数组中的原对象

在任何一个设计精良的应用中,色彩系统都是视觉一致性的基石。bg: string;这段代码定义了一个名为的接口,它包含了11个色彩字段,每个字段都对应应用界面中的一个特定功能角色。primary:主色调,通常用于页面头部、重要按钮等视觉重心区域。在本应用中,主色调选用了深棕色#3E2C23,既呼应了胶片暗房的氛围,又能提供足够的视觉对比度。brown:辅助棕色,用于次级强调元素,如标签背景、评分星星等,与主色调形成层次关系。bg:页面背景色,选用奶油色#F3EBDD。

2501_92985290的博客 951

go程序员面试算法宝典 pdf_Kotlin程序员面试算法宝典 PDF 下载

资料目录:前言面试笔试经验技巧篇经验技巧1 如何巧妙地回答面试官的问题2经验技巧2 如何回答技术性问题3经验技巧3 如何回答非技术性问题4经验技巧4 如何回答快速估算类问题5经验技巧5 如何回答算法设计问题6经验技巧6 如何回答系统设计问题8经验技巧7 如何解决求职中的时间冲突问题11经验技巧8 如果面试问题曾经遇见过,是否要告知面试官12经验技巧9 被企业拒绝后是否可以再申请12经验技巧10 如...

weixin_39556064的博客 784

Java零基础入门实战指南:从环境配置到力扣算法通关

Java作为一门面向对象的编程语言,其核心在于通过类与对象的概念来模拟现实世界,实现代码的封装、继承和多态。理解Java基础语法、数据类型和流程控制是掌握编程逻辑的第一步,而环境配置则是实践的开始。对于开发者而言,JDK的安装与环境变量设置是运行Java程序的基石,选择OpenJDK等免费发行版能规避授权风险。掌握这些基础后,便能在力扣(LeetCode)等平台通过算法题巩固知识,将理论转化为解决实际问题的能力。例如,通过数组操作和循环结构完成“两数之和”等经典题目,不仅能提升编码技能,还能为应对大厂面试中

weixin_34239169的博客 438

kotlin——数组(增删改查遍历)、haspMap(增删改查过滤)、for中断continue、去重、双数组查找

1、数组遍历(查) val array: Array<String> = Array(5) { (it * 10).toString() } // 下标 for (item in array.indices) { println("下标为==>" + item) } // 项的内容 for (item in array) { println("项为==>"

wy313622821的博客 5415

kotlin 多字段去重

kotlin 多字段去重

weixin_48164819的博客 703

kotlin 集合去重

val array = listOf(1,2,3,1,2,2,3,1) println(array) //去重 println(array.toSortedSet().toList()) print: [1, 2, 3, 1, 2, 2, 3, 1] [1, 2, 3]

jingzz1的博客 5975

n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)

n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin),一开始真的觉得去重挺难得,结果只要愿意去做,总能得到好的结果...

我怀里的猫的博客 886

Kotlin学习笔记(四)

集合 集合可以方便我们处理一组数据,也可以作为值参传递给函数,和我们学过的其他变量类型一样,List、Set和Map类型的变量也分为两类,只读和可变。 List 创建与获取元素 getOrElse是一个安全索引取值函数,它需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常。 ...

科科然的博客 750
上一篇: 如何看待结合数据工程和人工智能增强智能
下一篇: 毕业2年想跳槽人工智能,不知道AI是干什么的,现在学习人工智能还有希望吗?
网络安全-XG
博客等级 码龄5年 1万+粉丝 2752原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值