我想要一个HashMap来存储分数和相似分数的数量。 假设我有两个数组作为我的输入
int[] numerator = {1, 4, 1, 2};
int[] denominator = {2, 8, 3, 2};
我有一个分数类,看起来像
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 作为名称,将使用哈希代码存储实体。因此,请确保您使用简单且不可变的值作为键。
在您的情况下,我相信密钥应该是像1/2
等fraction
字符串。