我有以下代码尝试通过Java Stream API以并行方式从列表填充 map :

class NameId {...}

public class TestStream
{
    static public void main(String[] args)
    {
        List<NameId > niList = new ArrayList<>();
        niList.add(new NameId ("Alice", "123456"));
        niList.add(new NameId ("Bob", "223456"));
        niList.add(new NameId ("Carl", "323456"));

        Stream<NameId> niStream = niList.parallelStream();
        Map<String, String> niMap = niStream.collect(Collectors.toMap(NameId::getName, NameId::getId));
    }
}

我如何知道 map 是否使用多个线程(即并行)填充?我需要调用Collectors.toConcurrentMap而不是Collectors.toMap吗?这是使 map 人口平行化的合理方法吗?我怎么知 Prop 体的 map 支持新的niMap(例如HashMap)?

最佳答案

Javadoc:



因此,听起来toConcurrentMap将并行化插入。

默认情况下,背景图是HashMap。它只是调用toMap的版本,该版本接受Supplier<M>并传递HashMap::new。 (来源:来源)

关于java - 我如何知道Java Stream collect(Collectors.toMap)是否并行化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34099555/

10-14 11:15