java – 选择具有预期数量的唯一值和插入的HashSet的初始容量
发布时间:2020-09-21 08:06:11 所属栏目:Java 来源:互联网
导读:好的,这是我的情况: 我有一个国家数组,可能包含重复的.为了摆脱重复,我可以将它们全部添加到一个集合. 然而,当我创建Set时,它需要定义初始容量和负载因子,但是应该设置什么? 从谷歌搜索,我已经提出: String[] allStates = getAllStates();SetString unique
好的,这是我的情况: 我有一个国家数组,可能包含重复的.为了摆脱重复,我可以将它们全部添加到一个集合. 然而,当我创建Set时,它需要定义初始容量和负载因子,但是应该设置什么? 从谷歌搜索,我已经提出: String[] allStates = getAllStates(); Set<String> uniqueStates = new HashSet<String>(allStates.length,0.75); 这个问题是,allStates可以包含1到5000个州之间的地方.所以集合的容量可以超过5000,但只能包含最多50个. 所以可以设置Set的最大大小可以设置为最大状态数,并将负载因子设置为1. 我想我的问题真的是: >当您不知道“Set”中有多少项目时,应该设置初始容量? 解决方法假设你知道不会有超过50个州(你是指美国吗?),Set<String> uniqueStates = new HashSet<String>(allStates.length,0.75); 引用绝对是错误的.我建议你的初始容量为50 / 0.75 = 67,或者68是安全的. 我也觉得需要指出,你可能会强烈地反思这一点.将数组列表从16到64调整大小不会给你一个明显的性能打击,除非这是在程序中性能至关重要的部分. 所以最好的答案可能是使用: new HashSet<String>(); 这样一来,你一年之后就不会再回来了,为什么你选择了这样一个奇怪的构造函数呢. (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 确定一个方法是否覆盖使用反射的另一个?
- java基于正则提取字符串中的数字功能【如提取短信中的验证码
- MyBatis存储过程、MyBatis分页、MyBatis一对多增删改查操作
- java – JTable.clearSelection()vs Jtable.getSelectionMo
- java-如何在Eclipse中指定要包含在.WAR文件中的内容
- Java中的轻量级线程?
- mybatis generator 配置 反向生成Entity简单增删改查(推荐)
- java – 使用Apache Mina作为模拟/内存SFTP服务器进行单元测
- java – commons-logging和log4j属性文件
- 系统声音在Java