use*_*148 5 java parallel-processing java-stream
我有以下代码尝试通过Java Stream API以并行方式从List填充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));
}
}
Run Code Online (Sandbox Code Playgroud)
我如何知道是否使用多个线程填充地图,即并行?我是否需要调用Collectors.toConcurrentMap而不是Collectors.toMap?这是一种合理的方式来并行化地图的人口吗?我怎么知道具体的地图支持新的niMap(例如它是HashMap)?