可變集合支援更改集合內容的操作,例如新增或刪除元素。 在此頁面上,我們將描述實現 mutablecollection 的所有寫操作。 有關 list 與 map 可用的更多特定操作,請分別參見 list 相關操作與 map 相關操作。
要將單個元素新增到列表或集合,請使用 add() 函式。指定的物件將新增到集合的末尾。
val numbers =
mutablelistof(1
,2,3
,4)numbers.
add(5)
println
(numbers)
addall() 將引數物件的每個元素新增到列表或集合中。引數可以是 iterable、sequence 或 array。 接收者的型別和引數可能不同,例如,你可以將所有內容從 set 新增到 list。
當在列表上呼叫時,addall() 會按照在引數**現的順序新增各個新元素。 你也可以呼叫 addall() 時指定乙個元素位置作為第一引數。 引數集合的第乙個元素會被插入到這個位置。 其他元素將跟隨在它後面,將接收者元素移到末尾。
val numbers =
mutablelistof(1
,2,5
,6)numbers.
addall
(arrayof(7
,8))
println
(numbers)
numbers.
addall(2
,setof(3
,4))
println
(numbers)
你還可以使用 plus 運算子 - plusassign (+=) 新增元素。 當應用於可變集合時,+= 將第二個運算元(乙個元素或另乙個集合)追加到集合的末尾。
val numbers =
mutablelistof
("one"
,"two"
)numbers +=
"three"
println
(numbers)
numbers +=
listof
("four"
,"five"
)println
(numbers)
若要從可變集合中移除元素,請使用 remove() 函式。 remove() 接受元素值,並刪除該值的乙個匹配項。
val numbers =
mutablelistof(1
,2,3
,4,3
)numbers.
remove(3
)// 刪除了第乙個 `3`
println
(numbers)
numbers.
remove(5
)// 什麼都沒刪除
println
(numbers)
要一次刪除多個元素,有以下函式:
val numbers =
mutablelistof(1
,2,3
,4)println
(numbers)
numbers.
retainall
println
(numbers)
numbers.
clear()
println
(numbers)
val numbersset =
mutablesetof
("one"
,"two"
,"three"
,"four"
)numbersset.
removeall
(setof
("one"
,"two"))
println
(numbersset)
從集合中移除元素的另一種方法是使用 minusassign (-=) ——原地修改版的 minus 操作符。 minus 操作符。 第二個引數可以是元素型別的單個例項或另乙個集合。 右邊是單個元素時,-= 會移除它的第乙個匹配項。 反過來,如果它是乙個集合,那麼它的所有元素的每次出現都會刪除。 例如,如果列表包含重複的元素,它們將被同時刪除。 第二個運算元可以包含集合中不存在的元素。這些元素不會影響操作的執行。
val numbers =
mutablelistof
("one"
,"two"
,"three"
,"three"
,"four"
)numbers -=
"three"
println
(numbers)
numbers -=
listof
("four"
,"five"
)//numbers -= listof("four") // 與上述相同
println
(numbers)
kotlin 特殊集合之序列
1.先看段 直觀感受序列的優點,速度快 1 序列操作又稱惰性集合操作,在對集合進行鏈式操作 對映 過濾 變換 不需要像普通集合那樣,每進行一次資料操作都需要開闢新的記憶體儲存中間結果 author hc date 2019 09 25 12 05 fun main args array map su...
kotlin 學習筆記之 密封類
密封類用來表示受限的類繼承結構 當乙個值為有限幾種的型別 而不能有任何其他型別時。在某種意義上,他們是列舉類的擴充套件 列舉型別的值集合也是受限的,但每個列舉常量只存在乙個例項,而密封類的乙個子類可以有可包含狀態的多個例項。要宣告乙個密封類,需要在類名前面新增 sealed 修飾符。雖然密封類也可以...
kotlin學習筆記
屬性委託在單獨一頁中講 屬性委託。委託模式已經證明是實現繼承的乙個很好的替代方式,而 kotlin 可以零樣板 地原生支援它。derived類可以通過將其所有公有成員都委託給指定物件來實現乙個介面base inte ce base class baseimpl val x int base clas...