1

В Java8, после вычисления данных в ConcurrentHashMap,Transform ConcurrentHashMap в отсортированный список в Java

// this is a working code, which I want to simplify 
ConcurrentMap<String, AtomicInteger> data = 
    new ConcurrentHashMap<String, AtomicInteger>(); 
// ... (fill in the data object) 
final int l = data.keySet().size(); 
P[] points = new P[l]; 
int i = 0; 
for (Map.Entry<String, AtomicInteger> entry : data.entrySet()) 
    points[i++] = new A(entry.getKey(), entry.getValue().get() * 1.0/105); 
Arrays.sort(points); 

Я хочу, чтобы достичь этого:

data.parallelStream() 
.map((k, v) -> new A(k, v.get() * 1.0/105)) 
.sort().forEach(System.out::println) 

Как сделать это правильно?

+0

Возможно, вы должны проверить, действительно ли вам нужен AtomicInteger как тип значения в уже реализуемой реализации Map. – isnot2bad

ответ

4

Я думаю, что это то, что вы хотите. Вам необходимо создать Stream объектов Entry, поэтому вы не можете написать (k, v)->.

data.entrySet() 
    .parallelStream() 
    .map(e -> new A(e.getKey(), e.getValue().get() * 1.0/105)) 
    .sorted() 
    .forEachOrdered(System.out::println); 
+1

Мне было бы плохо, если бы я просто отредактировал свой ответ, в то время как ваше было правильно сначала сохранить мои показатели, чтобы я удалил и сохранил ваш. –

+0

Спасибо, сейчас работает. –

+0

@ Jean-François Savard Ты по-прежнему лучший :) –

Смежные вопросы