番石榴有静态方法

Maps.uniqueIndex(Iterable<V> values, Function<? super V,K> keyFunction)


它通过应用到各个元素上的输入函数的结果映射输入集合中的每个条目。

C#是否有类似的功能?

Java样本

Map<String, Human> idToHuman = Maps.uniqueIndex(humans, Human::getPassportId);

最佳答案

C#的情况下,我们有IEnumerable<V>而不是Iterable<V>,并且Dictionary嵌入了Map。这就是为什么我们可以放入C#

using System.Linq;

...

Dictionary<K, V> result = values.ToDictionary(v => keyFunction(v));


其中values要素IEnumerable<V>keyFunctionFunc<V, K>。在您的情况下,C#代码可以是这样的

using System.Linq;

...

// I've turned Java getPassportId method into PassportId property
// "Dictionary<String, Human>" declaration can be changed into just "var"
Dictionary<String, Human> idToHuman = humans.ToDictionary(human => human.PassportId);

关于java - 相当于Javas Guavas Maps.uniqueIndex的C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54901441/

10-13 09:24