Kotlin-集合详解(一)

本文详细介绍了Kotlin中的集合概念,包括Iterable、MutableIterable、Collection、List、Set和Map。重点讨论了不同集合的特点、操作方法以及与Java集合的比较。特别强调了在Kotlin中对可变和只读集合的明确区分,有助于编程时的类型安全和错误预防。还深入讲解了Set的只读和可变形式,以及List和Map的常见操作。
摘要由CSDN通过智能技术生成


集合相关:


概述

集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。

集合的分类:

  • Set(集)
  • List(列表)
  • Map(映射)

在Kotlin中,明确的区分了可变和只读的集合(list, set, map等),明确的确定了集合的可读性,有助于良好的编码,以及便于Bug的规避。

Iterable

Iterable接口是最基本的接口,声明了Kotlin中集合的通用方法。

  • fun iterator(): Iterator<T> - 返回该集合的元素的迭代器

MutableIterable

MutableIterable接口继承于Iterabl接口,并重写了iterator方法,从该接口继承的类可以表示为可以被迭代并且支持在迭代期间移除元素的元素序列。

  • fun iterator(): MutableIterator<T> - 返回该集合的元素的迭代器

Collection

Collection<E>接口继承于Iterable接口,是集合的通用接口,但仅封装了对集合的只读方法,如果想添加或者删除集合,需调用MutableCollection接口的方法。

成员属性

  • val size: Int - 集合中元素的数量

函数

  • isEmpty(): Boolean - 判断集合是否为空
  • fun contains(E): Boolean - 判断集合中是否包含某一元素
  • fun containsAll(Collection<E>): Boolean - 判断集合中是否包含某一集合
  • fun iterator(): Iterator<E> - 返回该只读集合的元素的迭代器

MutableCollection<E>

MutableCollection<E>继承于Iterable<E>,Collection<E>接口,封装了添加或移除集合中元素的方法。

  • fun add(E): Boolean - 向集合中添加元素。添加成功,返回ture,否则返回false。
  • fun addAll(Collection): Boolean - 向集合中添加一个集合。添加成功,返回ture,否则返回false。
  • fun remove(E): Boolean - 移除集合中的元素。移除成功,返回ture,否则返回false。
  • fun removeAll(Collection): Boolean - 移除集合中的一个集合。移除成功,返回ture,否则返回false。
  • fun retainAll(Collection): Boolean - 判断集合中是否包含一个集合。如果包含,返回ture,否则返回false。
  • fun clear(): Unit - 将集合中的元素清空

Set

概述

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

Kotlin没有专门的语法用来创建set,可以使用标准库中的方法, 比如setOf(),mutableSetOf()。

  • emptySet(): Set - 创建一个空的只读Set
  • setOf(vararg T): Set - 创建一个只读Set
  • mutableSetOf(vararg elements): MutableSet - 创建一个可变Set

Set API

查询操作

  • val size: Int - 集合中元素的数量
  • fun isEmpty(): Boolean - 判断集合是否为空
  • fun contains(E): Boolean - 判断集合中是否包含某一元素
  • fun iterator(): Iterator - 返回该只读集合的元素的迭代器

批量操作

  • fun containsAll(Collection<E>): Boolean - 判断集合中是否包含某一集合

只读Set

下面看一段示例代码:

val setTea: Set<String> = setOf("E", "F", "B", "C", "A", "D", "F", "B")

for (item in setTea) {
    println(item)
}

// Log打印
E
F
B
C
A

从示例代码中,我们可以清晰的看出
1. Set中没有重复的对象
2. Set中对象不按特定的方式排序

上面提到了,Set中不能存放重复的对象,对于Ko

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值