![](/img/trans.png)
[英]How to use (object references or object types) as values in a Hashmap?
[英]How can we check if an object has same values but different references in hashmap?
我想要一个 HashMap 来存储一个分数和相似分数的数量。 假设我有两个数组作为我的输入
int[] numerator = {1, 4, 1, 2};
int[] denominator = {2, 8, 3, 2};
我有一个看起来像的 Fraction 类
static class Fraction{
int x;
int y;
public Fraction(int _x, int _y){
x = _x;
y = _y;
}
};
我通过循环遍历给定数组(简化必须简化的内容)并将其添加到哈希图中来创建分数,如下所示:
int nSize = numerator.length;
List<Fraction> fractions = new ArrayList<>();
for(int i = 0; i < nSize; i ++){
int div = gcd(numerator[i], denominator[i]);
numerator[i] = numerator[i] / div;
denominator[i] = denominator[i] / div;
Fraction currentFraction = new Fraction(numerator[i], denominator[i]);
fractions.add(currentFraction);
if( map.containsKey(currentFraction) )
map.put(currentFraction, map.get(currentFraction) + 1 );
else
map.put(currentFraction, 1);
}
但是,而不是获取例如输入:
Fraction: 1/2 has value:2
Fraction: 2/3 has value:1
Fraction: 3/1 has value:1
我得到
Fraction: 1/2 has value:1
Fraction: 1/2 has value:1
Fraction: 2/3 has value:1
Fraction: 3/1 has value:1
我知道 hashmap 将分数保存为不同的对象,因为它们具有不同的引用(即使它们具有相同的分子和分母),但是我怎样才能实现上述结果?
HashMap 作为名称,将使用哈希码存储实体。 因此,请确保您使用简单且不可变的值作为键。
在您的情况下,我认为关键应该是像1/2
等这样的fraction
字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.