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

1.kotlin数组、集合常用方法

一、Array(数组)

创建方法

方法说明示例
arrayOf()创建数组val arr = arrayOf(1, 2, 3)
arrayOfNulls()创建指定大小的空数组val nullArr = arrayOfNulls<String>(3)
Array() 构造函数通过函数初始化val squares = Array(5) { i -> i * i }

常用方法

方法说明示例
size获取数组大小arr.size // 3
get(index)获取指定位置元素arr.get(0) // 1
set(index, value)设置指定位置元素arr.set(1, 5)
contains(element)检查是否包含元素arr.contains(2) // true
indexOf(element)获取元素索引arr.indexOf(3) // 2
forEach { }遍历数组arr.forEach { println(it) }
map { }转换数组arr.map { it * 2 } // [2, 4, 6]
filter { }过滤元素arr.filter { it > 1 } // [2, 3]
sort()排序(可变数组)arr.sort()
sliceArray(indices)切片arr.sliceArray(0..1) // [1, 2]
joinToString()连接为字符串arr.joinToString("-") // "1-2-3"

二、List(列表)

创建方法

方法说明示例
listOf()创建不可变列表val list = listOf("a", "b", "c")
mutableListOf()创建可变列表val mList = mutableListOf(1, 2, 3)
emptyList()创建空列表val empty = emptyList<Int>()
List(3) { "TZ" }创建3个相同的元素TZList(3) { "TZ" } // "a, b, c"

通用方法(不可变/可变)

方法说明示例
size获取列表大小list.size // 3
get(index)获取指定位置元素list[1] // "b"
indexOf(element)获取元素索引list.indexOf("c") // 2
contains(element)检查是否包含元素list.contains("a") // true
subList(from, to)获取子列表list.subList(0, 2) // ["a", "b"]
forEach { }遍历列表list.forEach { print(it) }
map { }转换列表list.map { it.uppercase() } // [A, B, C]
filter { }过滤元素list.filter { it != "b" } // ["a", "c"]
any { }检查是否有元素满足条件list.any { it == "b" } // true
all { }检查所有元素满足条件list.all { it.length == 1 } // true
none { }检查没有元素满足条件list.none { it == "d" } // true
first()获取第一个元素list.first() // "a"
last()获取最后一个元素list.last() // "c"
sorted()排序(返回新列表)list.sorted() // 自然顺序
reversed()反转列表list.reversed() // ["c", "b", "a"]
joinToString()连接为字符串list.joinToString() // "a, b, c"
listOfNotNull(element)自动去除所有null元素,再创建只读列表val array = arrayOf("A", null, "C");
val list: List<String> = listOfNotNull(*array)

可变列表特有方法

方法说明示例
add(element)添加元素mList.add(4)
add(index, element)在指定位置添加元素mList.add(0, 0)
remove(element)移除元素mList.remove(2)
removeAt(index)移除指定位置元素mList.removeAt(0)
set(index, element)修改指定位置元素mList[1] = 10
clear()清空列表mList.clear()
sort()原地排序mList.sort()
shuffle()随机打乱mList.shuffle()

三、Set(集合)

创建方法

方法说明示例
setOf()创建不可变集合val set = setOf(1, 2, 3)
mutableSetOf()创建可变集合val mSet = mutableSetOf("a", "b")
hashSetOf()创建HashSetval hashSet = hashSetOf(1.0, 2.0)
sortedSetOf()创建SortedSetval sortedSet = sortedSetOf(3, 1, 2)

通用方法(不可变/可变)

方法说明示例
size获取集合大小set.size // 3
contains(element)检查是否包含元素set.contains(2) // true
isEmpty()检查是否为空set.isEmpty() // false
isNotEmpty()检查是否非空set.isNotEmpty() // true
forEach { }遍历集合set.forEach { println(it) }
filter { }过滤元素set.filter { it > 1 } // [2, 3]
map { }转换集合set.map { it * 2 } // [2, 4, 6]
any { }检查是否有元素满足条件set.any { it % 2 == 0 } // true
all { }检查所有元素满足条件set.all { it < 5 } // true
union(other)并集set.union(setOf(3, 4)) // [1,2,3,4]
intersect(other)交集set.intersect(setOf(2,3)) // [2,3]
minus(other)差集set.minus(setOf(3)) // [1,2]

可变集合特有方法

方法说明示例
add(element)添加元素mSet.add("c")
remove(element)移除元素mSet.remove("a")
clear()清空集合mSet.clear()
retainAll(other)保留交集mSet.retainAll(setOf("b", "c"))
addAll(other)添加多个元素mSet.addAll(listOf("d", "e"))

四、Map(映射)

创建方法

方法说明示例
mapOf()创建不可变映射val map = mapOf(1 to "a", 2 to "b")
mutableMapOf()创建可变映射val mMap = mutableMapOf("k1" to 1, "k2" to 2)
hashMapOf()创建HashMapval hashMap = hashMapOf(1 to "x", 2 to "y")
linkedMapOf()创建LinkedHashMapval linkedMap = linkedMapOf("a" to 1, "b" to 2)

通用方法(不可变/可变)

方法说明示例
size获取映射大小map.size // 2
keys获取所有键map.keys // [1, 2]
values获取所有值map.values // ["a", "b"]
entries获取所有键值对map.entries
isEmpty()检查是否为空map.isEmpty() // false
containsKey(key)检查是否包含键map.containsKey(1) // true
containsValue(value)检查是否包含值map.containsValue("b") // true
get(key)获取键对应值map[2] // "b"
getOrDefault(key, default)安全获取值map.getOrDefault(3, "c") // "c"
forEach { }遍历映射map.forEach { k, v -> println("$k: $v") }
filter { }过滤键值对map.filter { (k, v) -> k > 1 && v.startsWith("b") }
mapKeys { }转换键map.mapKeys { it.key * 2 } // {2="a", 4="b"}
mapValues { }转换值map.mapValues { it.value.uppercase() } // {1="A", 2="B"}
any { }检查是否有键值对满足条件map.any { it.key == 2 } // true
all { }检查所有键值对满足条件map.all { it.value is String } // true

可变映射特有方法

方法说明示例
put(key, value)添加/更新键值对mMap.put("k3", 3)
remove(key)移除键值对mMap.remove("k1")
clear()清空映射mMap.clear()
putAll(other)添加多个键值对mMap.putAll(mapOf("k4" to 4, "k5" to 5))
getOrPut(key) { value }获取或创建值mMap.getOrPut("new") { 100 }
compute(key) { }计算新值mMap.compute("k1") { k, v -> v?.times(2) }

五、通用集合方法

以下方法适用于所有集合类型(Array, List, Set, Map):

方法说明示例
isEmpty()检查是否为空list.isEmpty()
isNotEmpty()检查是否非空set.isNotEmpty()
count()获取元素数量map.count()
count { predicate }统计满足条件的元素arr.count { it > 5 }
first()获取第一个元素list.first()
first { predicate }获取第一个满足条件的元素set.first { it % 2 == 0 }
last()获取最后一个元素list.last()
last { predicate }获取最后一个满足条件的元素arr.last { it < 10 }
maxOrNull()获取最大值listOf(1,5,2).maxOrNull() // 5
minOrNull()获取最小值setOf(3,1,4).minOrNull() // 1
sum()求和(数值集合)listOf(1,2,3).sum() // 6
average()求平均值arrayOf(1.0, 2.0, 3.0).average() // 2.0
distinct()去重listOf(1,2,2,3).distinct() // [1,2,3]
groupBy { }按条件分组list.groupBy { it.length }
associateBy { }创建映射list.associateBy { it.id }
partition { }分区val (even, odd) = list.partition { it % 2 == 0 }
zip(other)合并两个集合listOf(1,2).zip(listOf("a","b")) // [(1,"a"), (2,"b")]
take(n)取前n个元素list.take(2)
drop(n)丢弃前n个元素set.drop(1)
chunked(size)分块list.chunked(3)
windowed(size)滑动窗口list.windowed(2)
fold(initial) { }累积操作list.fold(0) { acc, i -> acc + i }
reduce { }累积操作(无初始值)array.reduce { acc, i -> acc * i }
filterIsInstance<T>()过滤集合,返回指定类型T的元素组成的列表list.filterIsInstance<String>()
filterIsInstanceTo(destination)将集合中指定类型T的元素添加到目标集合destinationlist.filterIsInstanceTo(destList)
http://www.lryc.cn/news/609847.html

相关文章:

  • 【iOS】渲染原理离屏渲染
  • 网络安全 | 从 0 到 1 了解 WAF:Web 应用防火墙到底是什么?
  • 国内首个开源SCA社区——OpenSCA开源社区
  • C++临时对象:来源与性能优化之道
  • 前后端流式交互的几种方式
  • Petalinux快捷下载
  • 【笔记】ROS1|2 Turtlebot3汉堡Burger连接和远程控制【旧文转载】
  • 【SpringAI】SpringAI的介绍与简单使用
  • 算力板卡:驱动智能时代的核心引擎
  • File、IO流体系
  • 防御保护综合练习
  • 关键领域软件研发如何构建智能知识管理体系?从文档自动化到安全协同的全面升级
  • 详解Python标准库之通用操作系统服务
  • ZeroNews内网穿透安全策略深度解析:构建企业级安全连接体系
  • 【2025】想曰(yue)免费开源的文本加密软件,保障隐私安全
  • 福彩双色球第2025089期篮球号码分析
  • 竞品分析爬虫实现方案
  • 人类学家与建筑师:解析 UX 研究与项目管理的需求分析差异​
  • Opencv[一]
  • # 自动定时运行Python爬虫脚本教程(Windows任务计划程序)
  • 项目实战二:RPC
  • 17.6 超拟人大模型CharacterGLM技术解析:92.7%角色一致性+虚拟偶像互动提升300%,如何吊打GPT-4?
  • C++-异常
  • Python----大模型(量化 Quantization)
  • MySQL详解(一)
  • 从零开始的云计算生活——项目实战
  • 商标续展如果逾期了还有办法补救吗?
  • 消息系统技术文档
  • 学习嵌入式第十九天
  • 系统一个小时多次Full GC,导致系统线程停止运行,影响系统的性能,可靠性