gpt4 book ai didi

java - 哈希表 containsValue 无法正常工作

转载 作者:行者123 更新时间:2023-12-02 03:54:57 24 4
gpt4 key购买 nike

我有一个巨大的 float 组,我必须从中删除重复项。我尝试创建一个哈希表来填充唯一值并将其传递回另一个数组并返回它。问题出在 containsValue 方法中,该方法总是返回 false,因此所有点都会添加到 HashTable 中。

private float[] removeDuplicates1(float[] input){
Hashtable<Integer, float[]> h= new Hashtable<>();
for(int i=0; i<input.length/3; ++i) {
float[] pt= new float[]{input[i * 3], input[i * 3 + 1], input[i * 3 + 2]};
Log.i(TAG, Float.toString(pt[0]) + " " +Float.toString(pt[1]) + " " +Float.toString(pt[2])); //ok
Log.i(TAG, Boolean.toString(h.containsValue(pt))); //always false !?
if(!(h.containsValue(pt))){
h.put(i,pt);
Log.i(TAG, "added");
}
else Log.i(TAG, "NOT added");
}
float[] whitelist = new float[h.size()*3];
int a=0;
for(int j=0; j<h.size(); j++){
float[] f= h.get(j);
whitelist[a]= f[0];
whitelist[a+1]= f[1];
whitelist[a+2]= f[2];
a=a+3;
}
return whitelist;
}

我真的很感谢你的帮助。

最佳答案

h.containsValue(pt) 在查找匹配项时比较数组的地址,而不是其内容。

要实现您想要的效果,您可以编写一个包装类用作映射中的值,并为其重写 equalshashcode

关于java - 哈希表 containsValue 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35580602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com