我有一个将列表转换为地图的函数。调用此函数后,地图的大小不会改变。我正在尝试在以下两个实现之间做出决定:
Map<Long, Object> listToMap(List<Object> objs) {
/* Implementation One: */
Map<Long, Object> map = new HashMap<>(objs.size(), 1);
for (Object obj : objs) {
map.put(obj.getKey(), obj);
}
return map;
/* Implementation Two: */
return objs.stream().collect(Collectors.toMap(Object::getKey, obj -> obj));
}
在第一个实现中,我通过使用1的加载因子和列表的大小为所有元素分配了足够的内存。这样可以确保不会执行调整大小操作。然后,我遍历该列表并一个接一个地添加元素。
在第二种实现中,我使用Java 8流来提高可读性。
我的问题是:第二个实现是否会涉及HashMap的多个调整大小,或者是否已对其进行优化以分配足够的内存?
相关分类