我有以下列表结构 -
List(List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List({"esx":"192.168.20.52","vm":" naa.60a9800042704577762b45634476337a ","datastore":"","vNic":"","portGroupVLan":"","vSwitch":"","physicalNic":"","lunName":"lun_30102014_101347)","writeIops":44998,"readIops":1635,"latency":47008,"serialNumber":"BpEwv+EcDv3z","usedSize":0,"totalSize":4,"availableSize":4,"throughput":null}, (), ()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List((), (), ()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List((), (), ()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List(()), List((), (), ()))
我想从上面删除所有空列表。 我希望输出为 -
List({"esx":"192.168.20.52","vm":" naa.60a9800042704577762b45634476337a ","datastore":"","vNic":"","portGroupVLan":"","vSwitch":"","physicalNic":"","lunName":"lun_30102014_101347)","writeIops":44998,"readIops":1635,"latency":47008,"serialNumber":"BpEwv+EcDv3z","usedSize":0,"totalSize":4,"availableSize":4,"throughput":null})
如何使用scala获得以上输出?
答案 0 :(得分:2)
如果您的输入是这样的,即您只有list(list(list()))深度,则对flatten的双重调用将解决它。
val x = yourList
x.flatten.flatten
如果您的列表中有不同深度的空列表,则需要不断展平直到达到固定点:
val x = yourList
var y = x.flatten
var z = y.flatten
while (y != z) {
y = z
z = z.flatten
y
希望有所帮助:)