2014-11-06 104 views
-1

我有下面的列表结构 -如何使用scala从列表中删除空列表?

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的?

+4

压扁了!这将删除空白列表,同时将结构折叠一维。 – 2014-11-06 11:42:38

回答

2

如果输入是这样的,即你只有名单(名单(名单()))的深度,两个人通话扁平化会解决这个问题。

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 

希望帮助:)

+0

但我只想要非空列表...您能否看到我预期的输出和输入请给予 – user3322141 2014-11-06 12:13:03

+0

展平删除空列表: 列表(列表(),列表(1))。flatten ==列表(1) 我假设你的实际代码不是List(()),而是List(List()),否则你没有空的列表,你的列表中有单元类型的单个实例(非常不同的东西)。 – 2014-11-06 12:27:18

+1

你的while循环将永远不会被检测。 – sschaef 2014-11-06 13:36:37