Kotlin MutableSet接口
Kotlin MutableSet
接口是一個通用的無序元素集合。 MutableSet
接口不支持重複元素。 此接口是可變的,因此其方法支持讀寫功能,也支持添加和刪除元素。
Set接口使用mutableSetOf()
函數創建包含元素列表的set接口對象。
MutableSet接口聲明
interface MutableSet<E> : Set<E>, MutableCollection<E> (source)
MutableSet接口繼承的屬性
屬性
描述
abstract fun add(element: E): Boolean
它將給定元素添加到集合中。
abstract fun addAll(elements: Collection<E>): Boolean
它將給定集合的所有元素添加到當前集合中。
abstract fun clear()
它將刪除此集合中的所有元素。
abstract fun iterator(): MutableIterator<E>
它返回此對象元素的迭代器。
abstract fun remove(element: E): Boolean
如果指定元素存在於集合中,將從此集合中刪除單個指定元素。
abstract fun removeAll(elements: Collection<E>): Boolean
它會刪除集合中指定的當前集合中的所有元素。
abstract fun retainAll(elements: Collection<E>): Boolean
它僅保留當前集合中存在於指定集合中的那些元素。
abstract fun contains(element: E): Boolean
它檢查當前集合中是否包含的指定元素。
abstract fun containsAll(elements: Collection<E>): Boolean
它檢查當前集合中是否存在指定集合的所有元素。
abstract fun isEmpty(): Boolean
如果集合爲空(不包含任何元素),則返回true
,否則返回false
。
fun <T> Iterable<T>.any(): Boolean
如果集合包含至少一個元素,則返回true
。
fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean
如果至少元素與給定的謂詞匹配,則返回true
。
fun <T> Iterable<T>.distinct(): List<T>
它返回一個列表,其中只包含給定集合中的不同元素。
fun <T> Iterable<T>.drop(n: Int): List<T>
它返回一個列表,其中包含除前n
個元素之外的所有元素。
fun <T> Iterable<T>.elementAt(index: Int): T
它返回給定索引處的元素,或者如果集合中不存在給定索引則拋出IndexOutOfBoundException
。
fun <T> Iterable<T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T
如果索引在當前集合中超出範圍,它將返回給定索引處的元素或調用defaultValue
函數的結果。
fun <T : Comparable<T>> Iterable<T>.max(): T?
它返回最大的元素,如果集合中沒有元素,則返回null
。
fun <T : Comparable<T>> Iterable<T>.min(): T?
它返回最小的元素,如果集合中沒有元素,則返回null
。
fun <T> MutableCollection<out T>.remove(element: T): Boolean
如果它存在於當前集合中,它將刪除單個指定元素。
fun <T> MutableCollection<out T>.removeAll(elements: Collection<T>): Boolean
它刪除了包含在指定集合中的當前集合的所有元素。
fun <T> MutableCollection<out T>.retainAll(elements: Collection<T>): Boolean
它保留當前集合中包含在指定集合中的所有元素。
fun <T> Iterable<T>.reversed(): List<T>
它以相反的順序返回元素。
Kotlin MutableSet接口示例1
下面創建一個MutableSet,並遍歷元素的示例。
fun main(args: Array<String>) {
val intmutableSet = mutableSetOf<Int>(2, 6, 4, 29, 4, 5)
val anymutableSet: Set<Any> = setOf(2, 6, 4, 29, 4, 5, "Ajax", "Susen", "Ajax")
println("....intmutableSet....")
for(element in intmutableSet){
println(element)
}
println("....anymutableSet......")
for(element in anymutableSet){
println(element)
}
}
執行上面示例代碼,得到以下結果 -
....intmutableSet....
2
6
4
29
5
....anymutableSet......
2
6
4
29
5
Ajax
Susen
在上面的例子中,元素4
和Ajax
都使用兩次。 但是在遍歷MutableSet
時,它們只打印一次,這是因爲MutableSet
接口不支持重複元素。
Kotlin MutableSet示例2 - add() 和 addAll()函數
fun main(args: Array<String>) {
val intmutableSet = mutableSetOf<Int>(2, 6, 4, 29, 4, 5)
val mutableSet: MutableSet<Int> = mutableSetOf<Int>(6,8,11,22)
println("....intmutableSet....")
for(element in intmutableSet){
println(element)
}
intmutableSet.add(10)
println("....intmutableSet.add(10)....")
for(element in intmutableSet){
println(element)
}
intmutableSet.addAll(mutableSet)
println("....intmutableSet.addAll(mutableSet)....")
for(element in intmutableSet){
println(element)
}
}
執行上面示例代碼,得到以下結果 -
....intmutableSet....
2
6
4
29
5
....intmutableSet.add(10)....
2
6
4
29
5
10
....intmutableSet.addAll(mutableSet)....
2
6
4
29
5
10
8
11
22
Kotlin MutableSet示例3 - remove() 和 removeAll()函數
fun main(args: Array<String>) {
val intmutableSet = mutableSetOf<Int>(2, 6, 4, 29, 4, 5)
val mutableSet: MutableSet<Int> = mutableSetOf<Int>(6,8,11,22)
println("....intmutableSet....")
for(element in intmutableSet){
println(element)
}
intmutableSet.remove(29)
println("....intmutableSet.remove(29)....")
for(element in intmutableSet){
println(element)
}
intmutableSet.removeAll(mutableSet)
println("....intmutableSet.removeAll(mutableSet)....")
for(element in intmutableSet){
println(element)
}
}
執行上面示例代碼,得到以下結果 -
....intmutableSet....
2
6
4
29
5
....intmutableSet.remove(29)....
2
6
4
5
....intmutableSet.removeAll(mutableSet)....
2
4
5
Kotlin MutableSet示例4 - contains() 和 containsAll()函數
fun main(args: Array<String>) {
val mutableSet1 = mutableSetOf<Int>(2, 6, 4, 29, 4, 5)
val mutableSet2: MutableSet<Int> = mutableSetOf<Int>(6,8,11,22)
val mutableSet3: MutableSet<Int> = mutableSetOf<Int>(2,4,6)
println("....mutableSet1....")
for(element in mutableSet1){
println(element)
}
println("....mutableSet2....")
println(mutableSet2)
println("....mutableSet3....")
println(mutableSet3)
println("....mutableSet1.contains(29)....")
println(mutableSet1.contains(29))
println("....mutableSet1.containsAll(mutableSet2))....")
println(mutableSet1.containsAll(mutableSet2))
println("....mutableSet1.containsAll(mutableSet3))....")
println(mutableSet1.containsAll(mutableSet3))
}
執行上面示例代碼,得到以下結果 -
....mutableSet1....
2
6
4
29
5
....mutableSet2....
[6, 8, 11, 22]
....mutableSet3....
[2, 4, 6]
....mutableSet1.contains(29)....
true
....mutableSet1.containsAll(mutableSet2))....
false
....mutableSet1.containsAll(mutableSet3))....
true
Kotlin MutableSet示例5 - isEmpty() 和 any()函數
fun main(args: Array<String>) {
val mutableSet1 = mutableSetOf<Int>(2, 6, 4, 29, 4, 5)
println("....mutableSet1....")
for(element in mutableSet1){
println(element)
}
println("....mutableSet1.isEmpty()....")
if(mutableSet1.isEmpty())
println("mutableSet1 is empty, not contain any element")
else
println("mutableSet1 is not empty, contains element")
println("....mutableSet1.any()....")
if(mutableSet1.any())
println("mutableSet1 contain at least one or more elements")
else
println("mutableSet1 not contain any element")
}
執行上面示例代碼,得到以下結果 -
....mutableSet1....
2
6
4
29
5
....mutableSet1.isEmpty()....
mutableSet1 is not empty, contains element
....mutableSet1.any()....
mutableSet1 contain at least one or more elements
Kotlin MutableSet示例6 - first(),indexOf() 和 drop()函數
fun main(args: Array<String>) {
val mutableSet1 = mutableSetOf<Int>(2, 6, 4, 29, 4, 5)
println("....mutableSet1....")
for(element in mutableSet1){
println(element)
}
println("....mutableSet1.first()....")
println(mutableSet1.first())
println("...mutableSet1.indexOf(4)...")
println(mutableSet1.indexOf(4))
println("...mutableSet1.drop(3)...")
println(mutableSet1.drop(3))
}
執行上面示例代碼,得到以下結果 -
....mutableSet1....
2
6
4
29
5
....mutableSet1.first()....
2
...mutableSet1.indexOf(4)...
2
...mutableSet1.drop(3)...
[29, 5]