Java 为什么HashMap不适合整数键的大数据集?

Java 为什么HashMap不适合整数键的大数据集?,java,arrays,Java,Arrays,我有一个非空数组,它由N个整数组成。数组包含奇数个元素,数组中的每个元素都可以与具有相同值的另一个元素配对,只有一个元素未配对 例如,在数组中,如下所示: A[0] = 9 , A[1] = 3 , A[2] = 9 , A[3] = 3 , A[4] = 9 , A[5] = 7 , A[6] = 9 我需要编写一个函数,返回未配对元素的值 我的第一个本机解决方案之一是创建一个hashmap结构,该结构具有唯一的键-给定数组的N个整数,如果该键已经存在于hashmap中,则迭代数组并添加值。

我有一个非空数组,它由N个整数组成。数组包含奇数个元素,数组中的每个元素都可以与具有相同值的另一个元素配对,只有一个元素未配对

例如,在数组中,如下所示:

A[0] = 9 , A[1] = 3 , A[2] = 9 , A[3] = 3 , A[4] = 9 , A[5] = 7 , A[6] = 9
我需要编写一个函数,返回未配对元素的值

我的第一个本机解决方案之一是创建一个hashmap结构,该结构具有唯一的键-给定数组的N个整数,如果该键已经存在于hashmap中,则迭代数组并添加值。毕竟,值字段中只有1的键是未配对元素

我知道整数的哈希代码是它的int唯一值。。。 所以我认为不会有不同整数的重复键。所以我认为不会有不同整数的重复键。但是对于大数据集,这个解决方案不起作用。我认为这与负载因子有关。 但是我不能上它。我不需要另一种解决方案,因为我已经有了它,我只想了解当我们使用一大组整数键时hashmap有什么问题。。 这是我的密码,非常感谢 Map a=新的HashMap()

for(int i=0;i

我认为这与负载系数有关

不,问题不在于
HashMap
,而是在于您使用它的方式

您的解决方案不完整,因为它假设所有对都是唯一的。也就是说,它假设最多可以有一对9(在您发布的示例中不是这样,该示例包含两对9)

拥有多个相同的配对不一定会导致错误的答案,但是什么呢 例如,如果有3个9,其中两个是成对的,但第三个不是?您的解决方案将找不到它,因为
a.get(9)
将返回
3
,但您检查它是否等于
1

而不是检查

if(a.get(i)==1)
你应该检查一下这是否奇怪

if(a.get(i)%2==1)

好的,你的意思是如果我有几对这把钥匙,但它仍然不奇怪..就像{5,5,5,3,3},很好,没有想到这一点)检查..Eran!!!非常感谢你!!我知道可能会有很多非唯一对,但我没有注意到,除了一个奇数之外,可能还会有相同数字的同一对。它现在向我展示了100%的任务分数、正确性和性能。科尔哈卡沃德!
if(a.get(i)%2==1)