我有以下代码尝试通过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/