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,也不會有變數類型。
內容請見陣列中的遍歷集合。