KOTLIN的map集合操作

private val favoriteCollectionsData = listOf(

R.drawable.fc1_short_mantras to R.string.fc1_short_mantras,

R.drawable.fc2_nature_meditations to R.string.fc2_nature_meditations,

R.drawable.fc3_stress_and_anxiety to R.string.fc3_stress_and_anxiety,

R.drawable.fc4_self_massage to R.string.fc4_self_massage,

R.drawable.fc5_overwhelmed to R.string.fc5_overwhelmed,

R.drawable.fc6_nightly_wind_down to R.string.fc6_nightly_wind_down

).map { DrawableStringPair(it.first, it.second) }

private data class DrawableStringPair(

@DrawableRes val drawable: Int,

@StringRes val text: Int

)

  • listOf 是 Kotlin 标准库中的一个函数,用于创建一个不可变的列表。
  • R.drawableR.string 是 Android 项目中自动生成的资源类。R.drawable 包含所有的图像资源,R.string 包含所有的字符串资源。
  • to 是 Kotlin 中的中缀函数,用于创建 Pair 对象。例如,R.drawable.ab1_inversions to R.string.ab1_inversions 会创建一个 Pair<Int, Int> 对象,其中第一个元素是 R.drawable.ab1_inversions 的资源 ID,第二个元素是 R.string.ab1_inversions 的资源 ID。

因此,这部分代码创建了一个包含 6 个 Pair<Int, Int> 对象的列表,每个 Pair 对象都将一个图像资源 ID 与一个字符串资源 ID 关联起来。

  • map 是 Kotlin 集合类的扩展函数,用于对列表中的每个元素应用一个转换函数,并返回一个包含转换结果的新列表。
  • it 是 Kotlin 中的隐式参数名,在 Lambda 表达式中,如果 Lambda 只有一个参数,可以省略参数声明,直接使用 it 来引用该参数。在这里,it 代表列表中的每个 Pair<Int, Int> 对象。
  • it.firstit.second 分别是 Pair 对象的第一个和第二个元素,即图像资源 ID 和字符串资源 ID。
  • DrawableStringPair 是一个自定义类,用于存储图像资源 ID 和字符串资源 ID 的组合。代码通过 DrawableStringPair(it.first, it.second) 创建一个新的 DrawableStringPair 对象,并将其添加到新列表中。

fun main() { // 定义一个整数列表 val numbers = listOf(1, 2, 3, 4, 5) // 使用 map 函数对列表中的每个元素进行平方运算 val squaredNumbers = numbers.map { it * it } // 输出结果 println(squaredNumbers) }

fun main() { // 定义一个字符串列表 val words = listOf("hello", "world", "kotlin") // 使用 map 函数将列表中的每个字符串转换为大写 val upperCaseWords = words.map { it.uppercase() } // 输出结果 println(upperCaseWords) }

// 定义一个自定义类 data class Person(val name: String, val age: Int) fun main() { // 创建 Person 对象的列表 val people = listOf( Person("Alice", 25), Person("Bob", 30), Person("Charlie", 35) ) // 使用 map 函数提取每个人的名字 val names = people.map { it.name } // 输出结果 println(names) }

Kotlin 提供了丰富的集合操作函数,这些函数可以方便地对集合进行过滤、映射、排序、聚合等操作

相关推荐
(Charon)13 分钟前
【C++ 面试高频:内存管理、RAII 和智能指针详解】
java·开发语言·word
轻刀快马1 小时前
跨越软硬件的共鸣(二):从 Cache 写策略看 Redis 与 DB 的一致性博弈
java·开发语言·redis·计算机组成原理
gCode Teacher 格码致知1 小时前
Javascript技术:CSS 中rem、vh 和 px各有其最佳适用场景-由Deepseek产生
开发语言·javascript·css
超皮小龙猫1 小时前
c语言-1
c语言·开发语言
郝学胜-神的一滴2 小时前
完全二叉树与堆底层原理深度剖析 | 手写C++大顶堆实现
java·开发语言·数据结构·c++·python·算法
黄毛火烧雪下2 小时前
Java 基础笔记:文件、递归与字符编码
java·开发语言·笔记
swordbob3 小时前
CAP 定理:为什么不能同时实现 C、A、P?
开发语言·后端·spring
疯狂成瘾者3 小时前
Java 常用工具包 java.util
java·开发语言·windows
枫叶丹43 小时前
【HarmonyOS 6.0】MDM Kit 新特性:PC/2in1设备无锁屏密码重启自动解锁能力详解
开发语言·华为·harmonyos
ZHW_AI课题组3 小时前
Python 调用百度智能云 API 实现地址识别
开发语言·人工智能·python·机器学习·百度·数据挖掘