将多级哈希映射中的键收集到Scala中的有序ListBuffer
我有一个将多级哈希映射中的键收集到Scala中的有序ListBuffer,scala,hashmap,listbuffer,Scala,Hashmap,Listbuffer,我有一个HashmapH1,包含以下组件: H1: 键1:Int 值1:Hashmap H2 H2: 键2:Int 值2:多种类型的对象 我的目标是以最快的方式有序地收集H1中H2s的所有键 例如: (35->((3->obj1),(4->obj2)), 36->((4->obj3),(6->obj4)), 37->((5->obj5),(3->obj6))) 我会有一个列表缓冲区(3,4,5,6),H1可能会变大。这应该可以: h1M
Hashmap
H1,包含以下组件:
H1:键1:
Int
值1:
Hashmap H2
H2:键2:
Int
值2:多种类型的对象 我的目标是以最快的方式有序地收集H1中H2s的所有键 例如:
(35->((3->obj1),(4->obj2)),
36->((4->obj3),(6->obj4)),
37->((5->obj5),(3->obj6)))
我会有一个列表缓冲区(3,4,5,6)
,H1可能会变大。这应该可以:
h1Map
.valuesIterator
.flatMap(_.keysIterator)
.distinct
.toList
.sorted
如果您确实需要一个可变的列表缓冲区,您可以使用将列表
更改为[ListBuffer]
(如果您在2.12-
)或更改为(ListBuffer)
(如果您在2.13+
)。不过,我建议您尽量避免可变集合,而坚持使用不可变集合。谢谢,它确实奏效了。我正在为预先存在的算法添加一个特性,ListBuffer用于大多数结构和方法输入,我不想进行所有的重构。结果实际上是一种广泛使用的已有方法的输入。