我正在构建一个 Hashmap<Integer, POJO>
来自数据库(可以包含超过 10K 条记录)。然后我需要在hashmap的遍历下调用一个pdf生成函数
for(Map.Entry<Integer, LocationPojo> village : allVillages.entrySet()) {
genPdf(stateCode, village.getValue().getDistrictCode().toString() , village.getValue().getBlockCode().toString(),
village.getValue().getVillageCode().toString(), village.getValue().getVillageNameEnglish(), villageFile);
}
是否可以使用java 8 stream api
为了更快地处理上述数据?
最佳答案
您可以使用流来并行化 genPdf
调用:
allVillages.values().stream().parallel().forEach(village -> {
genPdf(stateCode, village.getDistrictCode().toString(), village.getBlockCode().toString(),
village.getVillageCode().toString(), village.getVillageNameEnglish(), villageFile);
});
这是否真正加快了处理速度取决于有多少 genPdf
可以并行运行。磁盘驱动器一次只能写入一项内容,因此如果 genPdf
花费大部分时间将 PDF 文件写入磁盘,您不会看到太大差异。另请记住,这可能会改变村庄的处理顺序。
关于hashmap的java流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49493408/