在 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 集合。