在 Scala 中将多级 Hashmap 的键收集到有序的 ListBuffer
Gather keys from multi level Hashmaps to an Ordered ListBuffer in Scala
我有一个 Hashmap
说 H1,包含以下组件:
H1:
键 1:Int
值 1:Hashmap H2
H2:
键 2:Int
Value2 : 多种类型的对象
我的目标是以最快的方式 Listbuffer
(不同的值)有序地收集 H1 中的所有 keys
个 H2。
示例:
(35->((3->obj1),(4->obj2)),
36->((4->obj3),(6->obj4)),
37->((5->obj5),(3->obj6)))
我会有一个 ListBuffer(3,4,5,6)
并且 H1 可能会变大。
这应该有效:
h1Map
.valuesIterator
.flatMap(_.keysIterator)
.distinct
.toList
.sorted
如果你真的需要一个 mutable ListBuffer 你可以用 to[ListBuffer]
[=20] 改变 toList
=](如果你在2.12-
)或to(ListBuffer)
(如果你在2.13+
).
但是,我建议您尽量避免 mutable 集合并坚持使用 immutable 集合。
我有一个 Hashmap
说 H1,包含以下组件:
H1:
键 1:Int
值 1:Hashmap H2
H2:
键 2:Int
Value2 : 多种类型的对象
我的目标是以最快的方式 Listbuffer
(不同的值)有序地收集 H1 中的所有 keys
个 H2。
示例:
(35->((3->obj1),(4->obj2)),
36->((4->obj3),(6->obj4)),
37->((5->obj5),(3->obj6)))
我会有一个 ListBuffer(3,4,5,6)
并且 H1 可能会变大。
这应该有效:
h1Map
.valuesIterator
.flatMap(_.keysIterator)
.distinct
.toList
.sorted
如果你真的需要一个 mutable ListBuffer 你可以用 to[ListBuffer]
[=20] 改变 toList
=](如果你在2.12-
)或to(ListBuffer)
(如果你在2.13+
).
但是,我建议您尽量避免 mutable 集合并坚持使用 immutable 集合。