猿问

Java Collectors.toMap的内存优化

我有一个将列表转换为地图的函数。调用此函数后,地图的大小不会改变。我正在尝试在以下两个实现之间做出决定:


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的多个调整大小,或者是否已对其进行优化以分配足够的内存?


开满天机
浏览 264回答 3
3回答
随时随地看视频慕课网APP

相关分类

Java
我要回答