Kotlin学习——kt里的集合List,Set,Map & List集合的各种方法之Int篇_kotlin list tomap join

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

systemUsers.add(newUser)

}

/**
* 返回只读列表
*/
fun getSysSudoers(): List {
return sudoers
}

fun main() {
addSystemUser(4)
println(“Tot sudoers: ${getSysSudoers().size}”)
getSysSudoers().forEach {
i -> println(“Some useful info on user $i”)
}
}


### Set


set是不支持重复项的无序集合



package com.tianju.collKt

val openIssues: MutableSet = mutableSetOf(“uniqueDescr1”, “uniqueDescr2”, “uniqueDescr3”)

/**
* 给set 里面添加元素
*/
fun addIssue(uniqueDesc: String): Boolean {
return openIssues.add(uniqueDesc)
}

/**
* 返回日志
*/
fun getStatusLog(isAdded: Boolean): String {
return if (isAdded) “registered correctly.” else “marked as duplicate and rejected.”
}

fun main() {
val aNewIssue: String = “uniqueDescr4”
val anIssueAlreadyIn: String = “uniqueDescr2”

println("Issue $aNewIssue ${getStatusLog(addIssue(aNewIssue))}")
println("Issue $anIssueAlreadyIn ${getStatusLog(addIssue(anIssueAlreadyIn))}")

}


### Map


映射是键/值对的集合,其中每个键都是唯一的,用于检索相应的值。对于创建映射,有函数mapOf()和mutableMapOf()。使用to infix函数可以减少初始化的噪声。可变映射的只读视图可以通过将其强制转换为map来获得。



package com.tianju.collKt

const val POINTS_X_PASS: Int = 15
val EZPassAccounts: MutableMap<Int, Int> = mutableMapOf(1 to 100, 2 to 100, 3 to 100)
// 创建一个只读map
val EZPassReport: Map<Int, Int> = EZPassAccounts

fun updatePointsCredit(accountId: Int) {
// 检查key是否存在
if (EZPassAccounts.containsKey(accountId)) {
println(“Updating $accountId…”)
EZPassAccounts[accountId] = EZPassAccounts.getValue(accountId) + POINTS_X_PASS
} else {
println(“Error: Trying to update a non-existing account (id: $accountId)”)
}
}

// 打印key:value
fun accountsReport() {
println(“EZ-Pass report:”)
EZPassReport.forEach {
k, v -> println(“ID $k: credit $v”)
}
}

fun main() {
accountsReport()
updatePointsCredit(1)
updatePointsCredit(1)
updatePointsCredit(5)
accountsReport()
}


## List集合的各种方法


### filter过滤



val nums = listOf(1,3,5,6,3,-4,-3)

// 过滤
val postNums = nums.filter { x -> x>0 }
val negNums = nums.filter { it < 0 }


### map 所有元素



// map函数,作用于所有元素
val doubled = nums.map { x->x*2 }
val tripled = nums.map { it*3 }


### any,all,none


返回值为Boolean



// any, all, none
// 返回值为Boolean 布尔
val anyPost = nums.any { it>0 }
val allEven = nums.all { it%2 ==0 }
val allLess6 = nums.none { it>7 }


### first,last首尾



// 第一个元素,最后一个元素
val firstNum = nums.first()
val lastNum = nums.last()
// 可以传一个表达式
val firstEven = nums.first { it%2==0 }


### count统计



// count
val totalNums = nums.count()
val evenCount = nums.count {it%2==0}


### partition隔断


按照条件分割成两个阵营



// partition 隔断
// ([6, -4], [1, 3, 5, 3, -3])
val evenOdd = nums.partition { it%2 ==0 }



println(evenOdd.first)


### minOrNul,maxOrNull 最小和最大


minOrNull和maxOrNull函数返回集合中最小和最大的元素。如果集合为空,则返回null。



// minOrNull和maxOrNull函数返回集合中最小和最大的元素。如果集合为空,则返回null。
val numbers = listOf(1, 2, 3)
val empty = emptyList()
val only = listOf(3)


### sort排序



// 排序sorted
val shuffled = listOf(5, 4, 2, 1, 3, -10)
val natural = shuffled.sorted()
// 取负数后排序
val inverted = shuffled.sortedBy { -it }
// 顺序
val descending = shuffled.sortedDescending()
val descendingBy = shuffled.sortedByDescending { kotlin.math.abs(it) }


### getOrElse 安全访问


getOrElse提供对集合元素的安全访问。它采用一个索引和一个函数,该函数在索引越界时提供默认值。



// getOrElse
val get1 = nums.getOrElse(1){56}
val get100 = nums.getOrElse(100){200}


### 所有代码



package com.tianju.collKt

val nums = listOf(1,3,5,6,3,-4,-3)

// 过滤
val postNums = nums.filter { x -> x>0 }
val negNums = nums.filter { it < 0 }

// map函数,作用于所有元素

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

62471482)]
[外链图片转存中…(img-4BZXwqwW-1715062471482)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值