如何使用Java 8流方法对
目前,我正在定义一个匿名类来增加一个
Stream<T>
进行枚举,将每个T
实例映射到唯一的整数?例如,对于数组T[] values
,创建一个Map<T,Integer>
,其中Map.get(values[i]) == i
计算结果为true
。目前,我正在定义一个匿名类来增加一个
int
字段,以便与Collectors.toMap(..)
方法一起使用。private static <T> Map<T, Integer> createIdMap(final Stream<T> values) {
return values.collect(Collectors.toMap(Function.identity(), new Function<T, Integer>() {
private int nextId = 0;
@Override
public Integer apply(final T t) {
return nextId++;
}
}));
}
然而,使用Java 8流API是否有更加简洁/优雅的方法来完成这个任务?如果可以安全地并行化,则额外得分。
values
流中的所有数值都是唯一的吗? - Andremoniy