2016-12-14 95 views
0

我有一個對象集合O,我想從中創建兩個要素(例如,O.nameO.value)的(不可變)映射。從Xtend中的對集合創建不可變映射

我最好的解決方案迄今

newHashMap(o.map[it.name -> it.value]) 

但是,這將實例化和初始化一個新的HashMap這是不是acually我想要的。相反,我希望有一個不變的地圖,而不必要的實例,同樣什麼

o.toInvertedMap[value] 

回報 - 但這映射OO.value

Xtend庫中是否有方法來實現我想要的功能?

注:在一定範圍內添加到我的一般問題上面,其實我是想獲得地圖屬性名稱和值的對我的EMF EObject S:

newHashMap(eObject.eClass.EAttributes.map[it.name -> eObject.eGet(it).toString]) 

編輯:

我剛發現這個:

newImmutableMap(o.map[it.name -> it.value]) 

這看起來更像wha我想要。這是寫「最好」的方式嗎?

回答

0

我發現到目前爲止是(如在上面的更新)的最佳方式:

newImmutableMap(o.map[name->value]) 
0
o.map[name->value].toImmutableMap? 
+0

'o.map [名稱 - >值]'產生一個'列表>'。據我所見,這裏沒有擴展方法'toMap'或'toImmutableMap'。 (有'toMap(computeKeysFunction)',但是這不可用於將一個列表對轉換爲一張地圖。 –