Java 等价于Guavas映射。集合的唯一索引(…)

Java 等价于Guavas映射。集合的唯一索引(…),java,collections,guava,Java,Collections,Guava,番石榴有一种静态方法映射。唯一索引(Iterable value,Function有几种选择: Maps.uniqueIndex(values, keyFunction).keySet(); ImmutableSet.copyOf(Collections2.transform(values, function)); 有几个备选方案: Maps.uniqueIndex(values, keyFunction).keySet(); ImmutableSet.copyOf(Collections2.

番石榴有一种静态方法
映射。唯一索引(Iterable value,Function有几种选择:

Maps.uniqueIndex(values, keyFunction).keySet();
ImmutableSet.copyOf(Collections2.transform(values, function));
有几个备选方案:

Maps.uniqueIndex(values, keyFunction).keySet();
ImmutableSet.copyOf(Collections2.transform(values, function));
有几个备选方案:

Maps.uniqueIndex(values, keyFunction).keySet();
ImmutableSet.copyOf(Collections2.transform(values, function));
有几个备选方案:

Maps.uniqueIndex(values, keyFunction).keySet();
ImmutableSet.copyOf(Collections2.transform(values, function));

事实上,我找到了一个直截了当的解决方案:

FluentIterable.from(values).transform(keyFunction).toSet();

事实上,我找到了一个直截了当的解决方案:

FluentIterable.from(values).transform(keyFunction).toSet();

事实上,我找到了一个直截了当的解决方案:

FluentIterable.from(values).transform(keyFunction).toSet();

事实上,我找到了一个直截了当的解决方案:

FluentIterable.from(values).transform(keyFunction).toSet();

我想到了这两种方法,但创建一个映射只是为了获取它的密钥集(1.解决方案),或者创建一个未知集合,然后将实际集合作为副本(2.解决方案),这似乎有点无效。太糟糕了,Guava不支持此功能。@Jardo:别忘了转换后的集合不是副本,而是原始集合的实时视图。Jardo:Collections.transform返回一个O(1)视图;它并不昂贵。(由于填充,集合实际上并不比贴图便宜;它们只是不维护对值对象的引用。)你是对的,我想这毕竟不是一个糟糕的解决方案。我已经考虑了这两种方法,但是创建一个映射只是为了获取它的密钥集(1.解决方案),或者创建一个未知集合,然后将实际集合作为副本(2.解决方案),似乎有点无效。太糟糕了,Guava不支持此功能。@Jardo:别忘了转换后的集合不是副本,而是原始集合的实时视图。Jardo:Collections.transform返回一个O(1)视图;它并不昂贵。(由于填充,集合实际上并不比贴图便宜;它们只是不维护对值对象的引用。)你是对的,我想这毕竟不是一个糟糕的解决方案。我已经考虑了这两种方法,但是创建一个映射只是为了获取它的密钥集(1.解决方案),或者创建一个未知集合,然后将实际集合作为副本(2.解决方案),似乎有点无效。太糟糕了,Guava不支持此功能。@Jardo:别忘了转换后的集合不是副本,而是原始集合的实时视图。Jardo:Collections.transform返回一个O(1)视图;它并不昂贵。(由于填充,集合实际上并不比贴图便宜;它们只是不维护对值对象的引用。)你是对的,我想这毕竟不是一个糟糕的解决方案。我已经考虑了这两种方法,但是创建一个映射只是为了获取它的密钥集(1.解决方案),或者创建一个未知集合,然后将实际集合作为副本(2.解决方案),似乎有点无效。太糟糕了,Guava不支持此功能。@Jardo:别忘了转换后的集合不是副本,而是原始集合的实时视图。Jardo:Collections.transform返回一个O(1)视图;它并不昂贵。(由于填充,集合实际上并不比贴图便宜;它们只是不维护对值对象的引用。)你说得对,我想这毕竟是个不错的解决办法。