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

java – 选择具有预期数量的唯一值和插入的HashSet的初始容量

好的,这是我的情况:

我有一个国家数组,可能包含重复的.为了摆脱重复,我可以将它们全部添加一个集合.

然而,当我创建Set时,它需要定义初始容量和负载因子,但是应该设置什么?

从谷歌搜索,我已经提出:

String[] allStates = getAllStates();
Set<String> uniqueStates = new HashSet<String>(allStates.length,0.75);

这个问题是,allStates可以包含1到5000个州之间的地方.所以集合的容量可以超过5000,但只能包含最多50个.

所以可以设置Set的最大大小可以设置为最大状态数,并将负载因子设置为1.

我想我的问题真的是:

>当您不知道“Set”中有多少项目时,应该设置初始容量?
>最可以包含的是50是什么设置真的很重要?
我应该甚至担心吗?

解决方法

假设你知道不会有超过50个州(你是指美国吗?),
Set<String> uniqueStates = new HashSet<String>(allStates.length,0.75);

引用绝对是错误的.我建议你的初始容量为50 / 0.75 = 67,或者68是安全的.

我也觉得需要指出,你可能会强烈地反思这一点.将数组列表从16到64调整大小不会给你一个明显的性能打击,除非这是在程序中性能至关重要的部分.

所以最好的答案可能是使用:

new HashSet<String>();

这样一来,你一年之后就不会再回来了,为什么你选择了这样一个奇怪的构造函数呢.

原文地址:https://www.jb51.cc/java/125670.html

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

相关推荐