Kotlin中的Set也分为:
不可变Set。
可变MutableSet。(支持增加和删除)
不可变Set同样是继承了Collection。MutableSet接口继承于Set, MutableCollection,同时对Set进行扩展,添加了对元素添加和删除等操作。
Set,MutableSet源码:
// 不可变Set
public interface Set<out E> : Collection<E> {
// Query Operations
override val size: Int
override fun isEmpty(): Boolean
override fun contains(element: @UnsafeVariance E): Boolean
override fun iterator(): Iterator<E>
// Bulk Operations
override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean
}
// 可变MutableSet
public interface MutableSet<E> : Set<E>, MutableCollection<E> {
// Query Operations
override fun iterator(): MutableIterator<E>
// Modification Operations
override fun add(element: E): Boolean
override fun remove(element: E): Boolean
// Bulk Modification Operations
override fun addAll(elements: Collection<E>): Boolean
override fun removeAll(elements: Collection<E>): Boolean
override fun retainAll(elements: Collection<E>): Boolean
override fun clear(): Unit
}
创建不可变Set
val mSet = setOf(1, 8, 2, 9, 1, 4, 7, 9, 0, 0, 8)
println(mSet)
因为Set集合的于元素具有不可重复性,打印输出如下:
[1, 8, 2, 9, 4, 7, 0]
创建可变MutableSet
val mSet = mutableSetOf(1, 8, 2, 9, 1, 4, 7, 9, 0, 0, 8)
println("=========打印MutableSet=========")
println(mSet)
println("=======MutableSet添加元素========")
mSet.add(3)
mSet.add(5)
println(mSet)
println("=======MutableSet删除元素========")
mSet.remove(0)
println(mSet)
println("=======获取最大元素与最小元素=======")
println(mSet.max())
println(mSet.min())
打印输出:
=========打印MutableSet==========
[1, 8, 2, 9, 4, 7, 0]
=======MutableSet添加元素========
[1, 8, 2, 9, 4, 7, 0, 3, 5]
=======MutableSet删除元素========
[1, 8, 2, 9, 4, 7, 3, 5]
======获取最大元素与最小元素======
9
1
遍历Set
forEach遍历
val mSet = mutableSetOf(1, 8, 2, 9, 1, 4, 7, 9, 0, 0, 8)
mSet.forEach {
println(it)
}
打印输出:
1
8
2
9
4
7
0
for遍历
val mSet = mutableSetOf(1, 8, 2, 9, 1, 4, 7, 9, 0, 0, 8)
for (number in mSet){
println(number)
}
打印输出:
1
8
2
9
4
7
0
iterator遍历
val mSet = mutableSetOf(1, 8, 2, 9, 1, 4, 7, 9, 0, 0, 8)
val mIterator = mSet.iterator()
if (!mIterator.hasNext()) return
while (mIterator.hasNext()){
println(mIterator.next())
}
打印输出:
1
8
2
9
4
7
0