微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HashSet的迭代成本还取决于支持映射的容量吗?

如何解决HashSet的迭代成本还取决于支持映射的容量吗?

HashSet使用HashMap元素作为地图键来实现。由于地图具有定义的数量的存储桶,可以包含一个或多个元素,因此迭代需要检查每个存储桶是否包含元素。

解决方法

HashSet的JavaDocs中:

该类为基本操作(添加,删除,包含和大小)提供恒定的时间性能,假设哈希函数将元素正确地分散在存储桶中。对此集合进行迭代需要的时间与HashSet实例的大小(元素的数量)加上后备HashMap实例的“容量”(存储桶的数量)之和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得过高(或负载因子过低),这一点非常重要

为什么迭代需要的时间与总和(集合中元素的数量+支持映射的容量)成比例,而不仅与集合本身中的元素数量成正比?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。