在Xtend

时间:2016-12-14 13:44:54

标签: collections xtend

我有一组对象O,我想从中创建两个要素的(不可变)地图(例如O.nameO.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])

这似乎更像我想要的。这是写“最佳”的方式吗?

2 个答案:

答案 0 :(得分:1)

到目前为止,我找到的最好的方法是(如上面的更新):

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

答案 1 :(得分:0)

o.map[name->value].toImmutableMap?