Используйте эффективную конечную переменную-счетчик, внешнюю по отношению к потоку.
Поскольку вставка в порядке, вам не нужно, чтобы конечная карта была TreeMap
;это может быть быстрее LinkedHashMap
, чей порядок итераций такой же, как и для вставки.
AtomicInteger counter = new AtomicInteger();
Map<Integer, MyClass> map = sortedSet.stream()
.collect(Collectors.toMap(
x -> counter.getAndIncrement(),
x -> x,
(a, b) -> a,
LinkedHashMap::new));
Если вам крайне необходимо TreeMap
, замените LinkedHashMap
на TreeMap
в приведенном выше коде.