kotlin 學習筆記之 集合 寫操作

2021-10-23 22:04:00 字數 2501 閱讀 8223

可變集合支援更改集合內容的操作,例如新增或刪除元素。 在此頁面上,我們將描述實現 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...