Kotlin Set接口是元素的一般无序集合。 Set接口不支持重复元素。该接口本质上是不可变的,其方法支持集合的只读函数。
Set接口使用setOf()函数创建set接口的对象列表,其中包含元素列表。
Set声明
interface Set<out E> : Collection<E> (source)
示例1 - setOf()
让无涯教程创建一个使用setOf()函数声明和遍历set元素的示例。在本示例中,无涯教程创建了一组非通用的Int类型和另一个Any类型的通用类型。
fun main(args: Array<String>){ val intSet = setOf(2,6,4,29,4,5) val mySet: Set<Any> = setOf(2,6,4,29,4,5,"Ashu","Ajay") println(".......print Int set.........") for(element in intSet){ println(element) } println(".......print Any set.........") for(element in mySet){ println(element) }}
输出:
.......print Int set......... 2 6 4 29 5 .......print Any set......... 2 6 4 29 5 Ashu Ajay
在上面的示例中,无涯教程在 intset 和 myset 中声明两次元素4,但是在遍历它们时,它们只打印一个元素4一次。这是因为SET接口不支持重复元素。
示例2 - contains() 和 containsAll()
contains()函数检查给定元素是否存在于当前集中。如果它包含在集合中,则该集合返回true,否则返回false。而containsAll()函数检查当前集合中是否存在集合类型的所有元素。如果集合包含集合类型的所有元素,则返回true,否则返回false。
fun main(args: Array<String>){ val mySet: Set<Any> = setOf(2,6,4,29,5,"Ashu","Ajay") val intSet = setOf(6,4,29) println(".......print Any set.........") for(element in mySet){ println(element) } println("...mySet.contains\"Ashu\"...") println(mySet.contains("Ashu")) println("...mySet.contains(20)...") println(mySet.contains(20)) println("...mySet.containsAll(intSet)...") println(mySet.containsAll(intSet))}
输出:
.......print Any set......... 2 6 4 29 5 Ashu Ajay ...mySet.contains"Ashu"... true ...mySet.contains(20)... false ...mySet.containsAll(intSet)... true
示例3 - isEmpty()和 isNotEmpty()
isEmpty()函数检查当前集合是否为空。如果集合为空,则isEmpty()函数返回true,否则返回false。并且isNotEmpty()检查当前集合是否为空。如果集合不为空,则isNotEmpty()函数返回true,否则返回false。
fun main(args: Array<String>){
val mySet: Set<Any> = setOf(2,6,4,29,5,"Ashu","Ajay")
println(".......print Any set.........")
for(element in mySet){
println(element)
}
println</span><span class="pun">(</span><span class="str">"...mySet.isEmpty()..."</span><span class="pun">)</span><span class="pln">
println</span><span class="pun">(</span><span class="pln">mySet</span><span class="pun">.</span><span class="pln">isEmpty</span><span class="pun">())</span><span class="pln">
println</span><span class="pun">(</span><span class="str">"...mySet.isNotEmpty()..."</span><span class="pun">)</span><span class="pln">
println</span><span class="pun">(</span><span class="pln">mySet</span><span class="pun">.</span><span class="pln">isNotEmpty</span><span class="pun">())</span><span class="pln">
}
输出:
.......print Any set......... 2 6 4 29 5 Ashu Ajay ...mySet.isEmpty()... false ...mySet.isNotEmpty()... true
示例4 - drop()
drop()函数返回集合的前n个元素以外的所有元素。
fun main(args: Array<String>){ val mySet: Set<Any> = setOf(2,6,4,29,4,5,"Ajay","Ashu","Ajay") println(".......print Any set.........") for(element in mySet){ println(element) } val remainList= mySet.drop(4) println(".......print Set after mySet.drop(4).........") for(element in remainList){ println(element) } }
输出:
.......print Any set......... 2 6 4 29 5 Ajay Ashu .......print Set after mySet.drop(4)......... 5 Ajay Ashu
示例5 - elementAt() 和 elementAtOrNull()
elementAt()函数返回给定索引处的元素,elementAtOrNull()函数也返回给定索引处的元素,但是如果指定的索引不包含element,则返回null。
fun main(args: Array<String>){
val mySet: Set<Any> = setOf(2,6,4,29,4,5,"Ajay","Ashu","Ajay")
println</span><span class="pun">(</span><span class="str">".......print Any set........."</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">for</span><span class="pun">(</span><span class="pln">element </span><span class="kwd">in</span><span class="pln"> mySet</span><span class="pun">){</span><span class="pln">
println</span><span class="pun">(</span><span class="pln">element</span><span class="pun">)</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
println</span><span class="pun">(</span><span class="str">".......print mySet.elementAt(3)........."</span><span class="pun">)</span><span class="pln">
println</span><span class="pun">(</span><span class="pln">mySet</span><span class="pun">.</span><span class="pln">elementAt</span><span class="pun">(</span><span class="lit">3</span><span class="pun">))</span><span class="pln">
println</span><span class="pun">(</span><span class="str">".......print mySet.elementAtOrNull(5)........."</span><span class="pun">)</span><span class="pln">
println</span><span class="pun">(</span><span class="pln">mySet</span><span class="pun">.</span><span class="pln">elementAtOrNull</span><span class="pun">(</span><span class="lit">5</span><span class="pun">))</span><span class="pln">
}
输出:
.......print Any set......... 2 6 4 29 5 Ajay Ashu .......print mySet.elementAt(3)......... 29 .......print mySet.elementAtOrNull(5)......... Ajay