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");
}
結果としては...
どれも同じ.
(厳密には違うのかもしれないけど)
あんまり気にすることないのかなあ
変数名に出てくるmの意味は
Androidの参考書などのサンプルコードにmDialogとかmResultTextとか出てくるけど,あれはメンバ変数のmって意味なのか.変数名の最後にアンダースコア付けたりするのと同じ.
あんまり気にする必要もないのかもね.