我有一组对象O
,我想从中创建两个要素的(不可变)地图(例如O.name
和O.value
)。
到目前为止,我的最佳解决方案是
newHashMap(o.map[it.name -> it.value])
但是这将实例化并初始化一个新的HashMap
,这不是我想要的。相反,我想要一个没有不必要的实例化的不可变映射,类似于什么
o.toInvertedMap[value]
返回 - 但这会将O
映射到O.value
。
Xtend库中是否有方法可以实现我想要的效果?
注意:要在上面的一般问题中添加一些上下文,我实际上想要获取EMF EObject
的属性名称和值的映射:
newHashMap(eObject.eClass.EAttributes.map[it.name -> eObject.eGet(it).toString])
修改:
我刚刚发现了这个:
newImmutableMap(o.map[it.name -> it.value])
这似乎更像我想要的。这是写“最佳”的方式吗?
答案 0 :(得分:1)
到目前为止,我找到的最好的方法是(如上面的更新):
newImmutableMap(o.map[name->value])
答案 1 :(得分:0)
o.map[name->value].toImmutableMap?