在Java中将ConcurrentHashMap转换为排序列表

在Java中将ConcurrentHashMap转换为排序列表,java,parallel-processing,java-8,java-stream,concurrenthashmap,Java,Parallel Processing,Java 8,Java Stream,Concurrenthashmap,在Java8中,在计算ConcurrentHashMap中的数据之后 如何正确地做到这一点?我想这就是你想要的。您需要创建一个Entry对象流,因此无法写入k,v-> 我想这就是你想要的。您需要创建一个Entry对象流,因此无法写入k,v-> 您可能应该检查在已经并发的映射实现中是否确实需要AtomicInteger作为值类型。您可能应该检查在已经并发的映射实现中是否确实需要AtomicInteger作为值类型。如果只是编辑我的答案,而您的答案一开始是正确的,以保持我的UPVOLUES,那么我将

在Java8中,在计算ConcurrentHashMap中的数据之后


如何正确地做到这一点?

我想这就是你想要的。您需要创建一个Entry对象流,因此无法写入k,v->


我想这就是你想要的。您需要创建一个Entry对象流,因此无法写入k,v->


您可能应该检查在已经并发的映射实现中是否确实需要AtomicInteger作为值类型。您可能应该检查在已经并发的映射实现中是否确实需要AtomicInteger作为值类型。如果只是编辑我的答案,而您的答案一开始是正确的,以保持我的UPVOLUES,那么我将删除并删除它向上投票。@Jean-François Savard你仍然是最棒的:@StephanRozinsky事实上我完全没有回答这个问题,即使是我原来的答案也有很多拼写错误,这都是别人因为他而修正的。@Jean-François Savard谢谢。我发布了这个版本,而你的原创还在那里,所以这不仅仅是一个骗局。我觉得其他人可以编辑你的答案很奇怪。如果有人编辑了我的答案,结果我得到了大量的赞成票/反对票,我能做些什么吗?@pbabcdefp如果你认为编辑不好,那么你可以回滚它。如果它是好的,那就简单地享受升级投票:。我会觉得很糟糕,只是编辑我的答案,而你的答案一开始是正确的,以保留我的升级投票,所以我删除并升级了你的。@Jean-François Savard你仍然是最好的:@StephanRozinsky实际上我完全没有通过这个答案,就连我原来的那本也有很多打字错误,这都是别人帮我修正的。@Jean-FrançoisSavard谢谢。我发布了这个版本,而你的原创还在那里,所以这不仅仅是一个骗局。我觉得其他人可以编辑你的答案很奇怪。如果有人编辑了我的答案,结果我得到了大量的赞成票/反对票,我能做些什么吗?@pbabcdefp如果你认为编辑不好,那么你可以回滚它。否则,如果它是好的,那么只需享受投票:。
// 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)
data.entrySet()
    .parallelStream()
    .map(e -> new A(e.getKey(), e.getValue().get() * 1.0 / 105))
    .sorted()
    .forEachOrdered(System.out::println);