如何用Lambda表达式从Dog对象数组提取指定成员值并存储为列表
解决Kotlin中提取符合条件的Dog对象名字并存储为列表的问题
嘿,我明白你碰到的问题啦!你之前用forEach的写法没法把结果存成字符串列表,核心原因是**forEach是个没有返回值的终端操作**——它只是帮你遍历每个符合条件的Dog,执行it.name这个动作,但不会把这些名字收集起来返回给你。
要正确拿到字符串列表,你得用map来替换forEach,map的作用就是把集合里的每个元素转换成你想要的类型,同时返回一个全新的集合。正确的写法应该是这样:
// 得到存储符合条件狗狗名字的字符串列表 val filteredDogNames: List<String> = dogs.filter { it.age > 5 }.map { it.name }
如果之后你想把这个列表转成逗号分隔的字符串,别用join哦,Kotlin里对应的方法是joinToString,直接追加在后面就行:
// 得到逗号分隔的狗狗名字字符串 val dogNamesString: String = dogs.filter { it.age > 5 }.map { it.name }.joinToString(", ")
简单总结下:filter帮你筛选出年龄超5岁的Dog,map把每个Dog转换成它的名字属性,这样就能直接得到你需要的字符串列表啦,之后不管是存起来还是转换成格式化字符串都完全没问题~
内容的提问来源于stack exchange,提问作者Joel Broström
相关产品推荐
相关产品推荐

