作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Kotlin 集合函数中,我们有setOf
、mutableSetOf
、sortedSetOf
、linkedSetOf
和 hashSetOf
。
前3个理解他们的区别。但是最后两个是什么?他们与他人和他们自己有何不同?
最佳答案
您知道 linkedSetOf
返回一个 LinkedHashSet
而 hashSetOf
返回一个 HashSet
。 LinkedHashSet
和 HashSet
之间的区别在于 LinkedHashSet
维护元素插入到集合中或从集合中删除的顺序,而 HashSet
不维护顺序。
观察下面的例子( Kotlin playground ,如果你想看到它的实际效果)
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]
如果您查看集合在添加和删除元素的不同实例中的打印方式,您会发现在 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]
关于kotlin - linkedSetOf 和 hashSetOf 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61965983/
在 Kotlin 集合函数中,我们有setOf、mutableSetOf、sortedSetOf、linkedSetOf 和 hashSetOf。 前3个理解他们的区别。但是最后两个是什么?他们与他人
我是一名优秀的程序员,十分优秀!