从 Xtend 中的对集合创建不可变映射

Create an immutable map from a collection of pairs in Xtend

我有一个对象集合 O,我想从中创建一个包含两个特征(例如 O.nameO.value)的(不可变)映射。

到目前为止我最好的解决方案是

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

但这将实例化并初始化一个新的 HashMap,这实际上不是我想要的。相反,我想要一个没有不需要实例化的不可变映射,类似地

o.toInvertedMap[value]

returns - 但是这会将 O 映射到 O.value

Xtend库中有没有实现我想要的方法?

注意:为我上面的一般问题添加一些上下文,我实际上想要为我的 EMF EObjects:[ 获取属性名称和值的映射=21=]

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

编辑:

我刚找到这个:

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

这看起来更像我想要的。这是"best"的写法吗?

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

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

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