List與MutableList

唯讀List

語法

val 變數: List<類型> = listOf(物件, 物件, 物件..)

只能讀取,不能修改。

1
2
3
4
val names: List<String> = listOf("Tom","Jack","lucy")
for (name in names) {
    println(name)
}
Tom
Jack
lucy

建立可讀寫MutableList

建立MutableList

1
val mutableList = mutableListOf<String>("Alice", "Bill", "Gina")

建立空的MutableList

1
val mutableList:MutableList<Int> = mutableListOf()

MutableList新增刪除修改

新增

1
2
3
mutableList.add("Ray")
// 指定插入的索引位置
mutableList.add(1,"Tina")

刪除

1
2
3
mutableList.remove("Alice")
// 指定刪除索引位置
mutableList.removeAt(0)

刪除前判斷有存在才刪。

1
2
3
val mutableList = mutableListOf<String>("Alice", "Bill", "Gina")
mutableList.removeIf{it.contains("Alice") }
println(mutableList)
[Bill, Gina]

清空

1
2
mutableList.clear()
println(mutableList)
[]

安全取值

get(索引)可以取得元素的值,但搭配以下二種更安全。

語法

無此元素,就傳回預設值
集合變數.getOrElse(索引) { "預設值"}

無此元素傳回null,使用貓王運算子?:,印出預設值
集合變數s.getOrNull(索引) ?: "預設值"
1
2
3
4
5
val namelist = listOf<String>("Mary", "Amy", "Jery")
println("======== list data ============")
println(namelist.get(0))
println(namelist.getOrElse(5) { "no data"})
println(namelist.getOrNull(5) ?: "no data")
Mary
no data
no data

索引取值

語法

${變數[索引]}
1
2
3
4
5
6
val namelist = listOf<String>("Mary", "Amy", "Jery")
println("list[0] = ${namelist[0]}")
println("list[1] = ${namelist[1]}")
println("list[2] = ${namelist[2]}")
println("list first = ${namelist.first()}")
println("list last = ${namelist.last()}")
list[0] = Mary
list[1] = Amy
list[2] = Jery

修改集合

1
2
3
val mutableList = mutableListOf<String>("Alice", "Bill", "Gina")
mutableList[0] = "Gee"
println(mutableList[0])
Gee

mutator

能用在MutableList,Array無法使用。

語法

+= 新增元素
-= 刪除元素

新增

1
2
3
4
val mutableList = mutableListOf<String>("Alice", "Bill", "Gina")
mutableList += "Momo"
mutableList += "Yoyo"
println(mutableList)
[Alice, Bill, Gina, Momo, Yoyo]

刪除

1
2
3
4
5
6
7
val mutableList = mutableListOf<String>("Alice", "Bill", "Gina")
mutableList += "Momo"
mutableList += "Yoyo"
println(mutableList)
mutableList -= "Momo"
mutableList -= "Yoyo"
println(mutableList)
[Alice, Bill, Gina]

List與MutableList互轉

List轉MutableList

1
2
val namelist = listOf<String>("Mary", "Amy", "Jery")
namelist.toMutableList()

MutableList轉List

1
mutableList.toList()

first()

取出第一個元素。

1
println("list first = ${namelist.first()}")
list first = Mary

last()

取出最後一個元素。

1
println("list last = ${namelist.last()}")
list last = Jery

size

1
2
val namelist = listOf<String>("Mary", "Amy", "Jery")
println("list size = ${namelist.size}")
list size = 3

contains

1
2
val namelist = listOf<String>("Mary", "Amy", "Jery")
println("list contains = ${namelist.contains("Amy")}")
list contains = true

in

與contains功能一樣,都有包含的意思。

1
2
val namelist = listOf<String>("Mary", "Amy", "Jery")
println("Mary" in namelist)
true

empty

1
2
3
4
5
val mutableList:MutableList<Int> = mutableListOf()
if (mutableList.isEmpty())
    println("empty")
if (mutableList.isNotEmpty())
    println("not empty")
empty

distinct()去掉重覆

1
2
3
4
val mutableList1 = mutableListOf<String>("Alice", "Bill", "Gina", "Alice")
println(mutableList1)
val distinctList  = mutableList1.distinct()
println(distinctList)
[Alice, Bill, Gina, Alice]
[Alice, Bill, Gina]

遍歷集合

for裡面的i變數,前面不會有val或var,也不會有變數類型。

內容請見陣列中的遍歷集合。

results matching ""

    No results matching ""