kotlin学习之集合(十三)
目錄
- 1. 集合概述
- 2. 集合分析
- 迭代器
- 抽象集合類
- 具體集合類
1. 集合概述
首先,Kotlin的集合只有兩種類型,可變類型和不可變類型,可變類型是在不可變類型前面加上Mutable:
他們的類圖如下:
1. 集合分析
迭代器
首先,Iterable是所有集合的最上層,提供一個迭代器,可以看到iterator()方法的前綴是operator(重載運算符必須覆蓋的方法),原來該方法是重載for循環中in關鍵字。也就是說,只要實現了Iterable接口,就能用for…in來遍歷。
public interface Iterable<out T> {public operator fun iterator(): Iterator<T> }MutableIterable看起來跟Iterable相似:
public interface MutableIterable<out T> : Iterable<T> {override fun iterator(): MutableIterator<T> }值得一提的是,MutableIterable類上面有一段說明:
Classes that inherit from this interface can be represented as a sequence of elements that canbe iterated over and that supports removing elements during iteration.
這說明MutableIterable支持在迭代的過程中刪除元素。
抽象集合類
public interface Collection<out E> : Iterable<E> {public val size: Intpublic fun isEmpty(): Booleanpublic operator fun contains(element: @UnsafeVariance E): Booleanoverride fun iterator(): Iterator<E>public fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean }值得注意的是contains方法用operator(重載運算符)修飾,所以它也是一種重載運算符,它重載了if判斷中的in,也就是說重載contains才能使用if in。
基本只是一下普通的迭代,判斷操作。而MutableCollection覆蓋了Collection方法,并添加了一些操作集合的方法。
public interface MutableCollection<E> : Collection<E>, MutableIterable<E> {override fun iterator(): MutableIterator<E>public fun add(element: E): Booleanpublic fun remove(element: E): Booleanpublic fun addAll(elements: Collection<E>): Booleanpublic fun removeAll(elements: Collection<E>): Booleanpublic fun retainAll(elements: Collection<E>): Booleanpublic fun clear(): Unit }具體集合類
這里從List角度去看看有方便的函數可以用。
public interface List<out E> : Collection<E> {override val size: Intoverride fun isEmpty(): Booleanoverride fun contains(element: @UnsafeVariance E): Booleanoverride fun iterator(): Iterator<E>override fun containsAll(elements: Collection<@UnsafeVariance E>): Booleanpublic operator fun get(index: Int): Epublic fun indexOf(element: @UnsafeVariance E): Intpublic fun lastIndexOf(element: @UnsafeVariance E): Intpublic fun listIterator(): ListIterator<E>public fun listIterator(index: Int): ListIterator<E>public fun subList(fromIndex: Int, toIndex: Int): List<E> }MutableList只是多了一個removeAt方法
public fun removeAt(index: Int): E總結
以上是生活随笔為你收集整理的kotlin学习之集合(十三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kotlin学习之解构声明(十二)
- 下一篇: kotlin学习之泛型(十四)