当前位置: 首页 > news >正文

kotlin数组操作

1:示例height = [0,1,0,2,1,0,1,3,2,1,2,1] 转为 kotlin IntArray 数组

valheight:IntArray=intArrayOf(0,1,0,2,1,0,1,3,2,1,2,1)

2: 数组转子串

  1. IntArray 转 字符串(一整个拼接成带方括号格式,和打印效果一致)
valarr=intArrayOf(0,1,0,2,1,0,1,3,2,1,2,1)valstr=arr.contentToString()println(str)// 输出:[0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]
  1. 只拼接数字,无括号空格,逗号分隔
valstr2=arr.joinToString(",")// 0,1,0,2,1,0,1,3,2,1,2,1
  1. 直接连起来纯数字字符串(无分隔符)
valstr3=arr.joinToString("")// 010210132121
  1. Java int [] 对应写法对照
int[]arr={0,1,0,2,1,0,1,3,2,1,2,1};Strings=Arrays.toString(arr);

3 遍历一个数字字符串,找出其中最大数字

funfindMaxDigit(str:String):Char{// 空串判空if(str.isEmpty())return'0'varmax=str[0]for(cinstr){if(c>max){max=c}}returnmax}**// 极简一行版**valmaxChar=str.maxOrNull()?:'0'

如:

vals="010210132121"valmax=s.maxOrNull()println(max)// 输出 3

java示例:

publicstaticcharfindMax(Strings){if(s==null||s.length()==0)return'0';charmax=s.charAt(0);for(inti=0;i<s.length();i++){charc=s.charAt(i);if(c>max)max=c;}returnmax;}

4 Kotlin 字符转数字(Char → Int)
方式 1:推荐标准函数 digitToInt()
仅支持 ‘0’~‘9’,其他字符会直接抛异常。

valc:Char='5'valnum:Int=c.digitToInt()println(num)// 5

方式 2:ASCII 减法(最底层原理)
字符’0’ASCII 码是 48,减去基准值即可:

valc='7'valnum=c-'0'printlin(num)//7

方式 3:安全转换,防止报错

valc='a'valnum=c.digitToIntOrNull()?:0//安全兜底,为空就赋值 0

字符串整体转数字

valstr="123"valn=str.toInt()

java 对应写法

charc='6';intnum=c-'0';

5 怎样提取字符串指定序号位置左右两边的子串
说明:
字符串索引:s[0] 是第一个字符
左侧:0 ~ i-1
当前位:i
右侧:i+1 ~ s.length-1

  1. 最简单截取
valstr="abcdefgh"vali=3valleftPart=str.substring(0,i)// 下标0~2valrightPart=str.substring(i+1)// 下标4到末尾valcurChar=str[i]println("左:$leftPart")println("当前:$curChar")println("右:$rightPart")

输入 abcdefgh,i=3:结果:
左:abc
当前:d
右:efgh

2、封装成工具函数

/** * 根据下标i拆分字符串:左边、当前字符、右边 * @param str 原字符串 * @param i 指定索引 * @return Triple(左侧串, 当前字符, 右侧串) */funsplitByIndex(str:String,i:Int):Triple<String,Char,String>{require(iinstr.indices){"下标越界"}valleft=str.take(i)valmid=str[i]valright=str.drop(i+1)returnTriple(left,mid,right)}

如果是 List / 数组 按索引拆分

fun<T>splitListByIndex(list:List<T>,i:Int):Triple<List<T>,T,List<T>>{valleft=list.subList(0,i)valmid=list[i]valright=list.subList(i+1,list.size)returnTriple(left,mid,right)}

调用:

vals="1234567"val(left,mid,right)=splitByIndex(s,4)println(left)// 1234println(mid)// 5println(right)// 67

6 根据下标 i 把 IntArray 切分成 左侧数组 + 右侧数组
/**

  • 将IntArray按下标i分割为左右两个数组(i位置元素舍弃)
  • @param array 原数组
  • @param i 分割下标
  • @return Pair(左侧数组, 右侧数组)
    */
funsplitIntArrayByIndex(array:IntArray,i:Int):Pair<IntArray,IntArray>{require(iinarray.indices){"下标越界"}valleft=array.take(i).toIntArray()valright=array.drop(i+1).toIntArray()returnlefttoright}

使用示例

funmain(){valarr=intArrayOf(1000,999,998,997,966)valindex=3val(leftArr,rightArr)=splitIntArrayByIndex(arr,index)println(leftArr.contentToString())// [1000, 999, 998]println(rightArr.contentToString())// [966]}

如果你需要保留 i 当前元素,返回三段(左、当前、右)

funsplitTriple(array:IntArray,i:Int):Triple<IntArray,Int,IntArray>{require(iinarray.indices)valleft=array.take(i).toIntArray()valmid=array[i]valright=array.drop(i+1).toIntArray()returnTriple(left,mid,right)}

Java 等价写法

publicstaticint[][]splitArray(int[]arr,inti){int[]left=Arrays.copyOfRange(arr,0,i);int[]right=Arrays.copyOfRange(arr,i+1,arr.length);returnnewint[][]{left,right};}

注意边界情况处理
i == 0:左边为空字符串
i == str.lastIndex:右边为空字符串
传入非法下标会抛异常,可加 try-catch 捕获

http://www.jsqmd.com/news/1204453/

相关文章:

  • C++类与对象进阶:从构造析构到多态,掌握面向对象核心
  • vue 自定义模块内容
  • 泰格豪雅中国官方售后服务中心|服务电话及全部网点地址权威信息通告(2026年7月最新) - 亨得利官方服务中心
  • 候选路径生成:替代端到端轨迹预测的新范式
  • 扩散模型数学原理
  • 2026 年新发布:营口热门的双轴粉尘加湿机公司联系方式,别再买湿器了!双轴粉尘加湿机如何颠覆你的空气质量? - 企业官方推荐【认证】
  • Qwen3.5 27B大模型本地部署与开发实战指南
  • GraspVLA:视觉-语言-动作联合建模实现零样本灵巧抓取
  • AI技能全生命周期管理工具SkillNexus解析
  • 2026年7月网站建设/小程序定制开发专业团队推荐_亳州玖晟网络科技有限公司 - 行业平台推荐
  • BEAVR:基于VR的双手遥操作范式与实时具身映射架构
  • C++内存泄漏防治:从RAII到智能指针的五大实战策略
  • 如何通过yuzu模拟器实现Switch游戏的高性能跨平台运行
  • C++实现TOPSIS算法:高性能多准则决策分析实战指南
  • VLA与世界模型不是对手,而是物理AI的左右脑
  • Windows 11/10数据迁移工具使用指南与技巧
  • Windows Server 2022 AD域控服务器搭建与优化指南
  • 匠选:广东服务不错的轻养生精油ODM厂家 - 品牌推广大师
  • 2026年7月宁波小辫子布/汽车内饰毛巾工厂推荐盘点_宁波雅康家居用品有限公司 - 行业平台推荐
  • 劳力士中国官方售后服务中心|全部网点地址及24小时热线权威信息通告(2026年7月最新) - 劳力士服务中心
  • VLA模型如何实现零标定相机泛化:解耦表征与无标定空间对齐
  • Ubuntu安装搜狗输入法全攻略与优化技巧
  • 2026考研英语(二)历年真题及答案解析(1980-2026年)(pdf电子版)
  • 全志R128多核通信:MSGBOX模块原理与实战
  • 从Prompt工程到AI Agent开发:零基础入门AI的完整学习路径
  • C++高性能实时AI动画渲染引擎:从底层优化到工程实践
  • 2026年7月宁波超细纤维家居清洁布/超细纤维厨房清洁毛巾供应商排行榜_宁波雅康家居用品有限公司 - 行业平台推荐
  • MICCAI 2025 | RadIR:基于放射学报告挖掘实现多粒度医学图像检索
  • Windows 2000服务架构解析与安全管理实践
  • .NET开发者必读:Copilot CLI与SDK的渐进式集成路径