2016-03-08 50 views
1

我想做一個斷言唯一的問題是順序可能是隨機的,所以我不能做一個正常的比較,所以我需要沿着.contains行的唯一問題,它下面的東西不起作用。斷言列表<Map>包含字符串

List<Map> aliasQueryResults 
Map<String, String> newTokenValuesMap 
assert aliasQueryResults.contains(newTokenValuesMap.get("{BASEALIAS}")) 

newTokenValuesMap.get("{BASEALIAS}")是好的,它返回字符串,所以它不是這種嘗試的問題。

+0

可否請你提供任何正在運行的例子,說明什麼問題? – Opal

+1

您正試圖查看地圖列表是否包含字符串......它不會。 – cjstehno

回答

1

假設列表實際上是一個List<Map<String, String>>,並且您想要查看的值是否來自列表中的任何地圖的任何值,那麼您可以從地圖中取出值:

aliasQueryResults*.values().flatten().contains(newTokenValuesMap.get("{BASEALIAS}")) 

例如:

groovy:000> mylist = [] 
===> [] 
groovy:000> mylist << [a:'asdf', b:'zxcv', c:'qwer'] 
===> [[a:asdf, b:zxcv, c:qwer]] 
groovy:000> mylist << [d:'xcvb',e:'wert', f:'sdfg'] 
===> [[a:asdf, b:zxcv, c:qwer], [d:xcvb, e:wert, f:sdfg]] 
groovy:000> mylist*.values() 
===> [[asdf, zxcv, qwer], [xcvb, wert, sdfg]] 
groovy:000> mylist*.values().flatten() 
===> [asdf, zxcv, qwer, xcvb, wert, sdfg] 
groovy:000> mylist*.values().flatten().contains('asdf') 
===> true 
+0

工作感謝你 – MusicaX79

相關問題