オブジェクティブ・ボゴソート

Androidアプリ開発の進捗を徒然と書いていきます

NumberFormatクラス

Javaでdouble型で計算して,それを出力としてStringに直す必要が研究の際にあった.

データの比率を調べていたので,0.000000032といった非常に小さい値が頻発しており,

double.toString().substring(0,5)のように

Stringに直す→上から5文字を抽出

としていたのだが,結果は"3.213"などと1以上の数字が出力されていてびっくり.

 

よくよく考えたらdoubleの出力結果が0.00000000032とかではなくて3.2E-8みたいな(適当)感じで累乗でまとめられてしまっていた.

 

これではだめだと言う事で調べて出てきたのがNumberFormatクラス.

数字のフォーマットを指定して処理できるのね.知らんかった.

連想配列(HashMap)と配列の速度比較

HashMap<Integer, Integer>でgetメソッドでvalueを得るのと,

int[ ]の配列にして配列の要素を指定して値を得るのとどっちが早いのだろう.

 

ということで実験.

 

        // Mapに値を入れていく
        for (int i = 0; i < 10000000; i++) {
            map.put(i, i);
            hoge[i] = i;
        }

        System.out.println("速度実験開始");
        // 速度実験
        long start = System.currentTimeMillis();
        int value = map.get(0);
        long end = System.currentTimeMillis();
        System.out.println("MAPのfirstは" + (end - start) + "ms");

        start = System.currentTimeMillis();
        value = map.get(9999999);
        end = System.currentTimeMillis();
        System.out.println("MAPのlastは" + (end - start) + "ms");

        start = System.currentTimeMillis();
        value = hoge[0];
        end = System.currentTimeMillis();
        System.out.println("配列のfirstは" + (end - start) + "ms");

        start = System.currentTimeMillis();
        value = hoge[9999999];
        end = System.currentTimeMillis();
        System.out.println("配列のlastは" + (end - start) + "ms");
    }

 

結果としては...

 

どれも同じ.

(厳密には違うのかもしれないけど)

あんまり気にすることないのかなあ