2014-11-06 64 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