ハッシュは文字列から計算されるため、速度への影響はありません。スペースへの影響 (ごくわずかな増加) は、長期的には無視できます。コードが読みやすくなる場合は、それを実行してパフォーマンスを低下させます (パフォーマンスの大きなボトルネックについて話しているのでない限り、それは問題ではありません)。
スピード
速度への影響については、 でHashMap<String, ?>
がString
ハッシュされることに注意してください。3 回の検索と比較して、カスタム オブジェクトを見つけるために 1 回の検索のみを実行する必要があるため、実際には速度がわずかに向上することがあります。
スペース
HashMap
スペースへの影響については、2 の累乗のサイズの内部配列を使用することを覚えておいてください。HashMap
カスタム負荷係数などの特別な設定を行わずにバニラのみを使用している場合は、わずかなスペースの増加が見られる場合があります。 (もちろん、これは単純化しただけです):
HashSet<String>[]
Double[]
Double[]
そして、それを組み合わせた後、あなたは
CustomObject[]
HashSet<String>
Double
Double
これは、マップと共に成長しない一定サイズの情報を無視しています。オブジェクトは、フィールドへの参照よりも多くのスペースを占有しますが、それほど多くはありません。
読みやすさ
カスタムオブジェクトオプションは、これを圧倒します. これは非常にクリーンで、非常に OOP であり、Java に非常によく適合します。パフォーマンスに関係なく、とにかくこれを行う必要があります。長い目で見れば見栄えが良くなり、メンテナンスも容易になります。
たとえば、カスタム オブジェクトにフィールドを追加するのは簡単です。しかし、個別のマップを持つということは、より多くの変数に対してより多くのマップを作成することを意味し、これは汚いことです。私はOOPの道を行くと言います。