Ely*_*lye 2 collections kotlin
在 Kotlin 集合函数中,我们
有setOf、mutableSetOf、sortedSetOf和。linkedSetOfhashSetOf
前 3 个是了解它们的差异的。但最后两个是什么?他们与他人、与自己有何不同?
您知道linkedSetOf返回 aLinkedHashSet而hashSetOf返回 a HashSet。LinkedHashSet和之间的区别HashSet在于,LinkedHashSet维护元素插入集合或从集合中删除的顺序,而不HashSet维护元素的顺序。
观察下面的示例(Kotlin游乐场,如果你想看看它的实际效果)
val set: LinkedHashSet<Int> = linkedSetOf(1, 3, 2)
println(set) // [1, 3, 2]
set.remove(3)
set += listOf(5, 4)
println(set) // [1, 2, 5, 4]
val hashSet: HashSet<Int> = hashSetOf(1, 3, 2)
println(hashSet) // [1, 2, 3]
hashSet.remove(3)
hashSet += listOf(5, 4)
println(hashSet) // [1, 2, 4, 5]
Run Code Online (Sandbox Code Playgroud)
如果您查看在添加和删除元素的不同实例中如何打印集合,您会发现在 的情况下LinkedHashSet,添加或删除元素的顺序保持不变,并在迭代时以相同的顺序打印。
注意:只是为了表明HashSet不对元素进行排序,下面是一个示例( Kotlin Playground)
val linkedHashSet = linkedSetOf("aaa","bbb","ccc")
println(linkedHashSet) // [aaa, bbb, ccc]
linkedHashSet.remove("ccc")
linkedHashSet += listOf("ddd","zzz")
println(linkedHashSet) // [aaa, bbb, ddd, zzz]
val hashSet = hashSetOf("aaa","bbb","ccc")
println(hashSet) // [aaa, ccc, bbb]
hashSet.remove("ccc")
hashSet += listOf("ddd","zzz")
println(hashSet) // [aaa, bbb, zzz, ddd]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1433 次 |
| 最近记录: |