A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nblity007 中级黑马   /  2016-8-4 21:14  /  774 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

错误的写法:

Map map = new HashMap(collection.size());  
for (Object o : collection) {  
  map.put(o.key, o.value);  
}

这里可以参考guava的Maps.newHashMapWithExpectedSize的实现. 用户的本意是希望给HashMap设置初始值, 避免扩容(resize)的开销. 但是没有考虑当添加的元素数量达到HashMap容量的75%时将出现resize。

正确的写法:

Map map = new HashMap(1 + (int) (collection.size() / 0.75));

1 个回复

倒序浏览
考虑的很周全
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马