首頁 > 軟體

Kotlin集合List Set Map使用介紹詳解

2022-09-06 18:07:16

1.在Kotlin中可以通過以下方式建立ArrayList、LinkedList、HashSet、HashMap等。

    val arrayList = ArrayList<String>()
    val linkedList = LinkedList<String>()
    val hashSet = HashSet<String>()
    val hashMap = HashMap<String,Int>()

2.除了上面的方式,Kotlin還提供了其他建立集合的方法。

1)建立不可變集合。

之所以是不可變的,是因為Kotlin針對這種方式建立的集合,不提供set,remove,add的方法。只提供了get方法。

 val list = listOf<Int>(1, 2, 3)
 val set = setOf<Int>(1, 2, 3)
 val map = mapOf(1 to "Jack", 2 to "Rose")

2)建立可以變集合。通過mutable建立的集合就是可變集合,可以對集合進行add set remove操作。

 val mutableList = mutableListOf<Int>(1, 2, 3)
 val mutableSet = mutableSetOf<Int>(1, 2, 3)
 val mutableMap = mutableMapOf(1 to "Jack", 2 to "Rose")

3.對List的操作。

    val list = listOf<Int>(1, 2, 3)
    //通常get的方式
    println(list.get(1))
    //之所以能使用[]類似陣列的方式獲取,是因為做了[]運運算元過載,後面會講到。
    println(list[1])
    //角標越界不會丟擲異常,而是返回一個null
    println(list.getOrNull(3))
    //通過?:空合併操作符,?:左邊的值為空,則返回右邊的值
    println(list.getOrNull(3) ?: -1)
    //如果角標越界,不會丟擲異常。而是返回{}lambda表示式中的值
    println(list.getOrElse(3) { -1 })

1)通常通過get(index)來獲取:

list.get(1)

2)也可以通過[index],像運算元組那樣獲取。之所以可以用[]來獲取,是因為做了運運算元過載。

list[1]

3)getOrNull,如果發生角標越界,不會丟擲異常而是返回null。可以和?:空合併操作符結合起來使用,返回一個預設值。?:左邊的值為空,則返回右邊的值

list.getOrNull(3)
list.getOrNull(3) ?: -1

4)getOrElse接收兩個引數,第一個索引值,第二個lambda表示式。如果角標越界,不會丟擲異常,而是返回lambda表示式中的值。

  list.getOrElse(3) { -1 }

5)可變集合:

 val mutableList = mutableListOf<Int>(1, 2, 3)

set操作

   mutableList.set(1,2)
   mutableList[1] = 2

add操作

 mutableList.add(4)
 mutableList += 5

remove操作 :-=運運算元過載,刪除的是元素的值

    mutableList -= 5
    mutableList.remove(5)

removeIf 接收一個lambda表示式,可以根據表示式中的條件進行刪除。

 mutableList.removeIf { it == 4 }
mutableList.removeIf { it.contains("H")}

6)List集合的遍歷

可以用in遍歷。

forEach 接收一個lambda表示式,會把集合中的元素傳進來。

forEachIndexed接收一個lambda表示式,有兩個引數,一個是index另外一個是對應的value

    for (item in list) {
        println(item)
    }
    list.forEach {
        println(it)
    }
    list.forEachIndexed { index, value ->
        println("$index , $value")
    }

4.list集合的解構:

可以通過_過濾掉不想要的元素。

 val (first:Int,second:Int,third:Int) = listOf<Int>(1, 2, 3)
 val (first: Int, _, third: Int) = listOf<Int>(1, 2, 3)
 println("$first  $third")

5.set集合

1)set的獲取方式和list類似

    val set = setOf<Int>(1, 2, 3)
    set.elementAt(1)
    set.elementAtOrElse(1) { -1 }
    set.elementAtOrNull(1)

2)可變set集合

    val mutableSet = mutableSetOf<Int>(1, 2, 3)
    mutableSet += 4
    mutableSet -= 2
    mutableSet.remove(3)
    mutableSet.removeIf { it==4 }

3)list和set相互轉換

list轉為set,可以去除重複元素。set中是不允許重複的。

   val list =  mutableSet.toList();
   val set =  mutableList.toSet();

6.陣列型別

    //ByteArray
    val byteArray = byteArrayOf(1,2,3)
    //IntArray
    val array = intArrayOf(1, 2, 3)
    //CharArray
    val charArray = charArrayOf('a','b','c')

7.map集合

1)map集合的建立

Pari物件,存放的就是key value

val map = mapOf(Pair(1, "HanMei"), Pair(2, "LiLei"))

to看起來像一個關鍵子,其實to是一個函數。這種寫法,後面會講到。

val map = mapOf(1 to "HanMei", 2 to "LiLei")

建立可變map

val mutableMap = mutableMapOf(1 to "HanMei", 2 to "LiLei")

2)map的get操作

    println(map[1])
    println(map.getValue(1))
    println(map.getOrDefault(1, "Default"))
    println(map.getOrElse(1) { "default" })

3)map的遍歷

  map.forEach {
        println("%$it.key , ${it.value}")
    }
  map.forEach { (key, value) -> println("$key ,$value") }

4)可變map的增刪改

   val mutableMap = mutableMapOf(1 to "HanMei", 2 to "LiLei")
    mutableMap += 3 to "XiaoHua"
    mutableMap.put(4, "XiaoHua")
    mutableMap.getOrPut(5) { "XiaoHua" }
    val getValue:()->String = {
        "value"
    }
    mutableMap.getOrPut(5) {getValue()}

到此這篇關於Kotlin集合List Set Map使用介紹詳解的文章就介紹到這了,更多相關Kotlin List Set Map內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com