为了账号安全,请及时绑定邮箱和手机立即绑定

Java Collectors.toMap的内存优化

Java Collectors.toMap的内存优化

开满天机 2021-05-03 12:47:20
我有一个将列表转换为地图的函数。调用此函数后,地图的大小不会改变。我正在尝试在以下两个实现之间做出决定: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的多个调整大小,或者是否已对其进行优化以分配足够的内存?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 263 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信