我有一個對象集合O
,我想從中創建兩個要素(例如,O.name
和O.value
)的(不可變)映射。從Xtend中的對集合創建不可變映射
我最好的解決方案迄今
newHashMap(o.map[it.name -> it.value])
但是,這將實例化和初始化一個新的HashMap
這是不是acually我想要的。相反,我希望有一個不變的地圖,而不必要的實例,同樣什麼
o.toInvertedMap[value]
回報 - 但這映射O
到O.value
。
Xtend庫中是否有方法來實現我想要的功能?
注:在一定範圍內添加到我的一般問題上面,其實我是想獲得地圖屬性名稱和值的對我的EMF EObject
S:
newHashMap(eObject.eClass.EAttributes.map[it.name -> eObject.eGet(it).toString])
編輯:
我剛發現這個:
newImmutableMap(o.map[it.name -> it.value])
這看起來更像wha我想要。這是寫「最好」的方式嗎?
'o.map [名稱 - >值]'產生一個'列表>'。據我所見,這裏沒有擴展方法'toMap'或'toImmutableMap'。 (有'toMap(computeKeysFunction)',但是這不可用於將一個列表對轉換爲一張地圖。 –