如何在HashMap中创建Farey序列?

时间:2016-01-11 22:31:00

标签: java math hashmap

我正在尝试为Farey sequence度6创建HashMap,其中分母是关键,分数是值。我的代码是:

public class FareySequence {
    public static void main(String[] args){ 
        Map<Double, Double> map = new HashMap<Double, Double>();

        for(double n = 1.0; n < 6.0; n++){
            for(double d = 6.0; d > n; d--){
                double frac = n / d;
                if(frac < 1){
                    if(!map.containsValue(frac)){
                        map.put(d, frac);
                    }
                }
            }
        }
        System.out.print(map);
    }
}

但是,当我运行它时,我得到:

{
      4.0=0.75,
      2.0=0.5,
      5.0=0.8,
      6.0=0.8333333333333334,
      3.0=0.6666666666666666
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

HashMap有你的切换算法,如果你想保持序列放入集合,你需要使用TreeMap()

按顺序打印:

{2.0 = 0.5,3.0 = 0.6666666666666666,4.0 = 0.75,5.0 = 0.8,6.0 = 0.8333333333333334}