日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kotlin学习之集合(十三)

發布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kotlin学习之集合(十三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1. 集合概述
  • 2. 集合分析
    • 迭代器
    • 抽象集合類
    • 具體集合類

首先,Kotlin的集合只有兩種類型,可變類型和不可變類型,可變類型是在不可變類型前面加上Mutable:

  • List和MutableList<E
  • Set 和 MutableSet
  • Map<K, out V> 和 MutableMap<K, V>
  • 他們的類圖如下:

    首先,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学习之集合(十三)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。