Java で double でなく float を使う理由は?

たとえば HashMap の loadFactor などは double でなく float 型だが、なぜわざわざ float を使っているのだろうか? Java2D の API も引数は基本的に float だ。メモリの節約のためだろうか? Java2D なら分からなくもないが、HashMap の loadFactor はなぜなのだろうか?