Kotlin 集合

与 Java 不同, Kotlin 明确地区分可变的和不可变的集合(list, set, map, 等等)。可变的集合可以增删改集合元素;而不可变集合也提供了相应的方法,但是指向会创建新的集合,而不是在原来的集合上修改。

Kotlin 的集合都在命名空间 kotlin.collections。

  • Arrays

数组通过 arrayOf()创建。

  • Lists

  • Maps

和 Java 的一样, 存储键值对。Kotlin 通过 mapOf()创建 Map。

Kotlin 有 HashMap, LinkedHashMap, TreeMap。

  • Sets

LinkedHashSet, HashSet, TreeSet。

  • Sequences

Sequences 用于为止大小的集合, 比如从数据库或者文件读取数据,不知道有多少行, 可以认为 Sequences 是一个无尽的 list。

固定大小的Sequences,可以通过 sequenceOf 表达式创建,比如 Array<T>.asSequence; 未知大小的,可以通过 generateSequence 创建。

val charSequence: Sequence<Char> = charArrayOf('a','b','c').asSequence()
val longsSequence: Sequence<Long> = listOf(12000L, 11L, -1999L).asSequence()
val mapSequence: Sequence<Map.Entry<Int, String>> = mapOf(1 to "A", 2 to "B", 3 to "C").asSequence()
val intSeq = sequenceOf(1, 2, 3, 4, 5)

var nextItem = 0
val sequence = generateSequence {
    nextItem += 1
    nextItem
}

val secondSequence = generateSequence(100) { if ((it + 1) % 2 == 0) it + 1 else it + 2 }

如下例子, 读取文件内容:

val stream = Thread.currentThread().javaClass.getResourceAsStream("/afile.txt")
val br = BufferedReader(InputStreamReader(stream))
val fileContent = generateSequence { br.readLine() }.takeWhile { it != null }
println("File content:${fileContent.joinToString(" ")}")

参考
《Programming Kotlin》Stephen Samuel ,Stefan Bocutiu
《Kotlin in Action》Dmitry Jemerov,Svetlana Isakova

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值