所以基本上我生成随机的10000个ip地址,我想存储在HashSet中找到的所有那些ip地址,但根据我的计算,找到了大约6000个ip地址,但是在HashSet中只有700个ip地址被存储了?在存储String方面HashSet是否有任何限制。任何建议将不胜感激。
Set<String> ipFine = new HashSet<String>();
long runs = 10000;
while(runs > 0) {
String ipAddress = generateIPAddress();
resp = SomeClass.getLocationByIp(ipAddress);
if(resp.getLocation() != null) {
ipFine.add(ipAddress);
}
runs--;
}
答案 0 :(得分:5)
就您而言,没有限制(限制是数组的最大大小,即2 ** 31)。
但是,Sets
仅存储唯一值,因此我猜您只生成了700个唯一地址。
修改您的代码,如下所示:
if(resp.getLocation() != null) {
if (ipFine.add(ipAddress)) { // add() returns true if the value is unique
runs--; // only decrement runs if it's a new value
}
}
此修改意味着您将继续循环,直到获得10000 唯一值。
答案 1 :(得分:4)
您确定拥有6000个不同的 IP地址吗?我的猜测是你有6000个IP地址,但大多数都是重复的......
你肯定没有遇到最大尺寸问题。
(请注意,您提供的代码无论如何都是无效的 - 您已经宣布ipFine
两次。)