2024年10月kotlinlist遍历(请教问下kotlin中怎么在集合中添加数组元素)

 更新时间:2024-10-12

  ⑴kotlinlist遍历(请教问下kotlin中怎么在集合中添加数组元素

  ⑵请教问下kotlin中怎么在集合中添加数组元素

  ⑶//定义Int类型数组varitemArr=intArrayOf(,,,,)funtest(){println(“初始:${itemArr.asList().toString()}“)println(“被整除:${bzc()}“)addItem()println(“添加-:${itemArr.asList().toString()}“)deleteItem()println(“删除第三个的元素:${itemArr.asList().toString()}“)deleteItemNum()println(“删除数字:${itemArr.asList().toString()}“)}/***增加item*item:需添加数值**/funaddItem(item:Int){varnewArr=IntArray(itemArr.size+)for(iinitemArr.indices){newArr}newArr=itemitemArr=newArr}/***删除item*index:删除位置下标**/fundeleteItem(index:Int){varnewArr=IntArray(itemArr.size-)for(iinnewArr.indices){if(i《index){newArr}else{newArr}}itemArr=newArr}/***删除对应的元素*num:删除数字**/fundeleteItemNum(num:Int){for(iinitemArr.indices){if(num==itemArr){deleteItem(i)break}}}/***被整除的所有元素**/funbzc():String{varstring:String=““for(iinitemArr.indices){if(itemArr%==){string+=itemArr.toString().plus(“、“)}}returnstring.substring(,string.lastIndex-)}

  ⑷Kotlin基础-for循环index

  ⑸list长度为,index打印从到,不包括list.size这个。list长度为,index打印从到,包括list.size这个。方式常用在遍历集合,不过Kotlin另外提供了很好遍历集合的方式,例如以上分析有不对的地方,请指出,互相学习,谢谢哦!

  ⑹用Kotlin写Android—数组,集合与字符串

  ⑺相比Java,在Kotlin里数组的写法变化还是挺大的,用xx-Array的命名规则来声明一个数组类型,并用xx-ArrayOf来进行初始化。

  ⑻例如整型数组,IntArray类型,IntArrayOf是初始化方法,以此类推其他基础类型也差不多。

  ⑼要注意的是,String类型的数组声明有所不同,Array《String》表示一个字符串数组,arrayOf是初始化方法。由此也可以得出,像我们自己定义的一些模型类要是想声明一个数组应该是和String一个用法。

  ⑽虽说数组的声明写法上有差别,但在数组元素的基本使用上可以说相差不大。

  ⑾Kotlin里的容器类分三大类,并且每个类又分为不可修改和可修改两种,这就好比val和var的变量声明一样。默认情况是不可修改的,要想对容器类进行类似增,删,改的操作就要声明可修改,即要加上前缀Mutable-。和数组初始化方法类似,容器类的初始化方法也是xx-Of系列,xx表示具体容器类型,例如如果是可变集合初始化那就是MutableSetOf。

  ⑿三者都能进行for-in循环,

  ⒀三者都能进行迭代器循环遍历,

  ⒁除此之外三者还能进行forEach循环遍历,不过对Map来说有API的版本限制,其次虽说写法简单,但可能实用性不那么强,毕竟实际开发中不会说仅做个简单遍历吧。所以我觉得记住上面两种较通用的写法就够了。

  ⒂字符串的常规方法没有太大的改变,我们依然可以用indexOf,subString,replace,split等方法。对于类型转换,Kotlin中的字符串提供了to-xxx系列的方法,例如字符串转整型toInt,字符串转浮点型toFloat等。

  ⒃另外一个就是Kotlin里用${}替换了Java中的String.format来用于字符串模板效果。

  ⒄kotlin笔记——集合操作归类

  ⒅contains(元素):检查集合中是否包含指定的元素,若存在则返回true,反之返回falseelementAt(index):获取对应下标的元素。若下标越界,会抛出IndexOutOfBoundsException(下标越界异常,同get(index)一样elementAtOrElse(index,{...}):获取对应下标的元素。若下标越界,返回默认值,此默认值就是你传入的下标的运算值elementAtOrNull(index):获取对应下标的元素。若下标越界,返回nullfirst():获取第一个元素,若集合为空集合,这会抛出NoSuchElementException异常first{}:获取指定元素的第一个元素。若不满足条件,则抛出NoSuchElementException异常firstOrNull():获取第一个元素,若集合为空集合,返回nullfirstOrNull{}:获取指定元素的第一个元素。若不满足条件,返回nullgetOrElse(index,{...}):同elementAtOrElse一样getOrNull(index):同elementAtOrNull一样last():同first()相反last{}:同first{}相反lastOrNull{}:同firstOrNull()相反lastOrNull():同firstOrNull{}相反indexOf(元素):返回指定元素的下标,若不存在,则返回-indexOfFirst{...}:返回第一个满足条件元素的下标,若不存在,则返回-indexOfLast{...}:返回最后一个满足条件元素的下标,若不存在,则返回-single():若集合的长度等于,则抛出NoSuchElementException异常,若等于,则返回第一个元素。反之,则抛出IllegalArgumentException异常single{}:找到集合中满足条件的元素,若元素满足条件,则返回该元素。否则会根据不同的条件,抛出异常。这个方法慎用singleOrNull():若集合的长度等于,则返回第一个元素。否则,返回nullsingleOrNull{}:找到集合中满足条件的元素,若元素满足条件,则返回该元素。否则返回nullforEach{...}:遍历元素。一般用作元素的打印forEachIndexed{index,value}:遍历元素,可获得集合中元素的下标。一般用作元素以及下标的打印ponentX():这个函数在前面的章节中提过多次了。用于获取元素。其中的X只能代表..。详情可看下面的例子reversed():反序。即和初始化的顺序反过来。sorted():自然升序。sortedBy{}:根据条件升序,即把不满足条件的放在前面,满足条件的放在后面sortedDescending():自然降序。sortedByDescending{}:根据条件降序。和sortedBy{}相反map{...}:把每个元素按照特定的方法进行转换,组成一个新的集合。mapNotNull{...}:同map{}函数的作用相同,只是过滤掉转换之后为null的元素mapIndexed{index,result}:把每个元素按照特定的方法进行转换,只是其可以操作元素的下标(index),组成一个新的集合。mapIndexedNotNull{index,result}:同mapIndexed{}函数的作用相同,只是过滤掉转换之后为null的元素flatMap{...}:根据条件合并两个集合,组成一个新的集合。groupBy{...}:分组。即根据条件把集合拆分为为一个Map《K,List《T》》类型的集合。filter{...}:把不满足条件的元素过滤掉filterIndexed{...}:和filter{}函数作用类似,只是可以操作集合中元素的下标(indexfilterNot{...}:和filter{}函数的作用相反filterNotNull():过滤掉集合中为null的元素。take(num):返回集合中前num个元素组成的集合takeWhile{...}:循环遍历集合,从第一个元素开始遍历集合,当第一个出现不满足条件元素的时候,退出遍历。然后把满足条件所有元素组成的集合返回。takeLast(num):返回集合中后num个元素组成的集合takeLastWhile{...}:循环遍历集合,从最后一个元素开始遍历集合,当第一个出现不满足条件元素的时候,退出遍历。然后把满足条件所有元素组成的集合返回。drop(num):过滤集合中前num个元素dropWhile{...}:相同条件下,和执行takeWhile{...}函数后得到的结果相反dropLast(num):过滤集合中后num个元素dropLastWhile{...}:相同条件下,和执行takeLastWhile{...}函数后得到的结果相反distinct():去除重复元素distinctBy{...}:根据操作元素后的结果去除重复元素slice:过滤掉所有不满足执行下标的元素。plus():合并两个集合中的元素,组成一个新的集合。也可以使用符号+zip:由两个集合按照相同的下标组成一个新集合。该新集合的类型是:List《Pair》unzip:和zip的作用相反。把一个类型为List《Pair》的集合拆分为两个集合。看下面的例子partition:判断元素是否满足条件把集合拆分为有两个Pair组成的新集合。any():判断是不是一个集合,若是,则在判断集合是否为空,若为空则返回false,反之返回true,若不是集合,则返回hasNextany{...}:判断集合中是否存在满足条件的元素。若存在则返回true,反之返回falseall{...}:判断集合中的所有元素是否都满足条件。若是则返回true,反之则返回falsenone():和any()函数的作用相反none{...}:和all{...}函数的作用相反max():获取集合中最大的元素,若为空元素集合,则返回nullmaxBy{...}:获取方法处理后返回结果最大值对应那个元素的初始值,如果没有则返回nullmin():获取集合中最小的元素,若为空元素集合,则返回nullminBy{...}:获取方法处理后返回结果最小值对应那个元素的初始值,如果没有则返回nullsum():计算出集合元素累加的结果。sumBy{...}:根据元素运算操作后的结果,然后根据这个结果计算出累加的值。sumByDouble{...}:和sumBy{}相似,不过sumBy{}是操作Int类型数据,而sumByDouble{}操作的是Double类型数据average():获取平均数reduce{...}:从集合中的第一项到最后一项的累计操作。reduceIndexed{...}:和reduce{}作用相同,只是其可以操作元素的下标(index)reduceRight{...}:从集合中的最后一项到第一项的累计操作。reduceRightIndexed{...}:和reduceRight{}作用相同,只是其可以操作元素的下标(index)fold{...}:和reduce{}类似,但是fold{}有一个初始值foldIndexed{...}:和reduceIndexed{}类似,但是foldIndexed{}有一个初始值foldRight{...}:和reduceRight{}类似,但是foldRight{}有一个初始值foldRightIndexed{...}:和reduceRightIndexed{}类似,但是foldRightIndexed{}有一个初始值

  ⒆Kotlin之for与区间表达式

  ⒇区间表达式由具有操作符形式..的rangeTo函数辅以in和!in形成。整型区间(IntRange、LongRange、CharRange有一个额外的特性:它们可以迭代。编译器负责将其转换为类似Java的基于索引的for-循环而无额外开销:如果你想倒序迭代数字呢?也很简单。你可以使用标准库中定义的downTo()函数:能否以不等于的任意步长迭代数字?当然没问题,step()函数有助于此:要创建一个不包括其结束元素的区间,可以使用until函数:它是如何工作的?请点击这里如果你想要通过索引遍历一个数组或者一个list,你可以这么做:或者你可以用库函数withIndex:

  ⒈kotlin数组和集合

  ⒉kotlin为数组增加了Array类,为元素是基本类型的数组增加了XxxArray类(其中Xxx可以是Byte、Short、Int等基本类型kotlin的集合体系抛弃了Java集合体系中的Queue集合,但增加了可变集合和不可变集合的概念,与java集合类似的是,kotlin的List代表有序、集合元素可重复的集合Set代表无序、集合元素不可重复的集合,Map则采用key-value对的形式存储数据kotlin既可允许通过Array《T》类的构造器来创建实例,也可通过arrayOf()等工具函数来创建实例arrayOf():无须显式指定数组的长度,但需要依次列出每个数组元素arrayOfNulls():需要显式指定数组的长度,数组元素全部被初始化null,需要用泛型指定数组元素的类型emptyArray():创建一个长度为的空数组,需要用泛型指定数组元素的类型Array(size:Int,init:(Int)-》T)构造器:需要显式指定数组的长度,并可通过Lambda表达式来动态计算各数组元素的值由于Array《T》类要求它的元素必须是引用类型,因此,如果程序将基本类型的值存入Array《T》中Kotlin会将这些基本类型的值自动装箱成包装类,为此,kotlin专门提供了ByteArray、ShortArray、IntArray、LongArray、CharArray、FloatArray、DoubleArray、BooleanArray用于存储基本类型,不会进行自动装箱XxxArray数组不支持使用将元素初始化为null方式来创建数组,因为基本类型的元素不允许为null访问数组元素都是通过在数组引用变量后紧跟一个方括号实现的,方括号里是数组元素的索引,索引值大于,且小于数组的长度程序还可使用in、!in来检查某个索引是否位于数组的索引区间内,Kotlin还为数组提供了lastlndex属性,用于返回数组最后一个元素的索引值,该索引值通常等于size-由于数组还提供了用operator修饰的plus()、contains()方法,因此数组可通过+、in运算符进行运算用一维数组的方式来处理多维数组Kotlin的集合类由两个接口派生:Collection和Map,又被分成两大类:可变集合和不可变集合,只有可变集合才能添加、删除、修改元素,不可变集合只能读取元素Kotlin只提供了HashSet、HasMap、LinkedHashSet、LinkedHashMap、ArrayList这几个集合实现类,而且它们都是可变集合,Kotlin的不可变集合类并没有暴露出来,只能通过函数来创建不可变集合,依然可以使用Java集合框架提供的其他集合类推荐使用Kotlin提供的工具函数来创建Set集合其中setOf()、mutableSetOf()、linkedSetOf()创建的Set集合能维护元素的添加顺序sortedSetOf()函数创建的Set集合会按照大小对元素排序,如果希望Set集合不维护元素顺序,只有通过hashSetOf()函数创建Set集合才行Set集合中很多方法与Array的方法功能相似,例如all(判断是否所有集合元素都满足指定规则、any(判断是否任一元素都满足指定规则、associate(根据Set集合生成Map集合、drop(按规则去除集合的部分元素、filter(对集合元素执行过滤、find(查找集合元素Set和MutableSet都包含Iterator()方法,但普通Set的iterator()方法返回的是Iterator对象,该Iterator对象只有hasNextOf()、nextOf()两个方法:而MutableSet的iterator()方法返回的是Mutablelterator对象,该对象除hasNextOf()、nextOf()两个方法之外,还提供了一个remove()方法,该方法可用于在遍历时删除元素List集合的最大特征有序可重复推荐使用工具函数来创建List集合Set支持的操作List一般都能支持,还增加了通过索引操作集合元素的方法在可变的Set中介绍的方法,可变的List也完全支持,还增加了根据索引执行插入、删除、替换的方法用于保存key-value对,也被分为可变的和不可变的推荐使用Kotlin提供的工具函数来创建Map集合

  ⒊kotlin集合list

  ⒋kotlin集合分类可变集合不可变集合.创建不可变List.创建可变集合.使用for循环遍历List元素.使用函数withIndex()遍历List元素.使用forEach遍历List元素常见的List元素操作函数.retainAll取两个集合交集:.contains(element:T):Boolean判断集合中是否有指定元素,有就返回true,否则返回false。.elementAt(index:Int):T查找下标对应的元素,如果下标越界会抛IndexOutOfBoundsException。.elementAtOrElse(index:Int,defaultValue:(Int)-》T):T查找下标对应元素,如果越界会根据方法返回默认值。.elementAtOrNull(index:Int):T?查找下标对应元素,如果越界就返回null.first()返回集合第个元素,如果是空集,抛出异常java.util.NoSuchElementException:Listisempty.。.firstOrNull():T?返回集合第个元素,如果是空集,对空指针异常处理的函数,如果集合为空,则返回null。.first(predicate:(T)-》Boolean):T返回符合条件的第一个元素,没有则抛异常NoSuchElementException。.indexOf(element:T):Int返回指定元素的下标,没有就返回-.indexOfFirst(predicate:(T)-》Boolean):Int返回第一个符合条件的元素的下标,没有就返回-。.indexOfLast(predicate:(T)-》Boolean):Int返回最后一个符合条件的元素下标,没有就返回-。.last()返回集合最后一个元素,空集则抛出异常NoSuchElementException。.last(predicate:(T)-》Boolean):T返回符合条件的最后一个元素,没有就抛NoSuchElementException.lastOrNull(predicate:(T)-》Boolean):T?返回符合条件的最后一个元素,没有就返回null.lastIndexOf(element:T):Int返回符合条件的最后一个元素的下标,没有就返回-.single():T该集合如果只有个元素,则返回该元素。为空时会抛出NoSuchElementException异常,存在多个元素时会抛IllegalArgumentException异常.List集合运算的基本函数.any():Boolean判断集合元素,如果集合为空,返回false,集合中存有一个或多个元素时返回true.any(predicate:(T)-》Boolean):Boolean判断集合元素,如果集合为空或者没有符号条件的元素返回false,集合中存有一个或多个元素符合条件时返回true.all(predicate:(T)-》Boolean):Boolean当且仅当该集合中所有元素都满足条件时,返回true;否则都返回false..none():Boolean如果集合中没有元素,则返回true,否则返回false。.none(predicate:(T)-》Boolean):Boolean如果集合中没有符合匹配条件的元素,返回true,否则返回false。.count():Int返回集合元素个数.count(predicate:(T)-》Boolean):Int返回符合匹配条件的元素的个数.max,min查询最大,最小元素,空集返回null过滤操作函数.take(n:Int):Listtake函数是根据传入的参数挑出该集合前n个元素的子集合.map(transform:(T)-》R):List将集合中的元素通过转换函数transform映射后的结果,存到一个集合中返回。.mapNotNull(transform:(T)-》R?)遍历集合每个元素,得到通过函数算子transform映射之后的值,剔除掉这些值中的null,返回一个无null元素的集合。排序操作符.reversed():List倒序排列集合元素。.sorted():List和sortedDescending():List升序排序和降序排序。.sortedBy和sortedByDescending可变集合MutableList的排序操作。根据函数映射的结果进行升序排序和降序排序。生产操作符.zip(other:Iterable):List合并成多维数组.plus(elements:Iterable):List合并集合

  ⒌Kotlin——集合

  ⒍Kotlin的集合类由两个接口派生:Collection和Map。Collection和Map是Java集合框架的根接口,这两个接口又包含一些子接口或实现类Java中的集合都是可变集合,但Kotlin的集合被分为两大类:可变集合和不可变集合。Kotlin也提供了Map集合。Kotlin的Map派生了MutableMap接口,代表了一个可变的Map集合。Kotlin并没有真正为JVM平台实现任何Set集合类通过别名借用了Java集合框架的类,不推荐使用构造器创建Set集合。推荐使用Kotlin提供的工具函数来创建Set集合Kotlin除了Java原生Set的各种方法之外,Kotlin的Set还扩展了大量方法,在Set集合有很多方法与Array的方法功能相似,例如all、any、associate、drop、filter、findKotlin也支持使用for-in循环遍历Set,与遍历数组的基本方式相同Set集合继承了Iteratable,因此可使用Iterable接口中定义的forEach()方法来遍历集合,该方法需要接受一个Lambda表达式作为参数由于setOf()方法返回的Set集合是有序的,因此可以通过索引来遍历Set集合,Set集合也提供了indices方法返回集合的索引区间···//indices形式遍历for(iinitSet.indices){println(itSet.elementAt(i))}···mutableSetOf()、hashSetOf()、linkedSetOf()、sortedSetOf()函数返回的集合都是可变的,依次是Set、HashSet、LinkedHashSet、TreeSetList集合的特点:Kotlin并未真正的实现List集合,只是通过别名借用了Java体系中的ArrayList集合。mutableListOf()、arraysListOf()函数返回的List集合都是可变的与Java相同,Kotlin的Map集合同样用于保存key-value对与Java不同,Kotlin的Map集合也分为可变的和不可变的Kotlin并没有真正的为JVM平台实现任何Map集合类。Map集合由多个key-value组成,因此遍历Map集合时可通过对key-value对进行遍历,也可先遍历key,再通过key获取value遍历

  ⒎Kotlin——数组

  ⒏Kotlin为数组增加了一个Array类。为元素是基本类型的数组增加了XxxArray类(其中Xxx可以是Byte、Short、Int等基本类型)Kotlin自己提供了一套集合体系,Kotlin的集合体系抛弃了Java集合体系中的Queue集合,Kotlin集合体系中增加了可变集合和不可变集合。

  ⒐Kotlin的数组使用Array《T》来代表,Kotlin的数组就是一个Array类的实例,因此Kotlin数组是引用类型

  ⒑访问数组是通过在数组的索引后跟一个为数组元素赋值,调用的其实就是set(index,value)方法

  ⒒上面的两种方式本质是一样的,在经过编译器编译优化后,会转换成根据数组的内存地址来访问数组元素,性能不会有任何损失

  ⒓所有的数组都有size属性,通过这个属性可以访问到数组的长度。

  ⒔for-in循环可以自动遍历数组的每个元素

  ⒕对数组使用for-in循环会被编译成使用基于索引的循环,并不会创建迭代器。因此具有良好的性能

  ⒖kotlin数组提供了一个indices属性,这个属性可返回数组的索引区间

  ⒗这种通过索引区间遍历的实现具有更好的性能,kotlin将会在底层将其编译成根据内存地址来访问元素,不需要额外创建区间对象

  ⒘Kotlin还为数组提供了一个lastIndex属性,该属性用于返回数组最后一个元素的索引,size-如果需要同时访问数组的索引和元素,可以使用数组的withIndex(),该方法返回一个Iterable对象,该对象的所有元素都是IndexedValue.

  ⒙请教问下kotlin中怎么在集合中添加数组元素

  ⒚//定义Int类型数组varitemArr=intArrayOf(,,,,)funtest(){println(“初始:${itemArr.asList().toString()}“)println(“被整除:${bzc()}“)addItem()println(“添加-:${itemArr.asList().toString()}“)deleteItem()println(“删除第三个的元素:${itemArr.asList().toString()}“)deleteItemNum()println(“删除数字:${itemArr.asList().toString()}“)}/***增加item*item:需添加数值**/funaddItem(item:Int){varnewArr=IntArray(itemArr.size+)for(iinitemArr.indices){newArr.toString().plus(“、“)}}returnstring.substring(,string.lastIndex-)}

您可能感兴趣的文章:

相关文章