キー、value1(float)、および value2 (非常に長い文字列) をマップに格納する必要があるという問題があります。value1 はすべてのキーで使用でき、value2 はキーの 1% でしか使用できません。
私は2つの可能な解決策を考えることができます
map1 = map(key1 ,map(key2, value1)) と map2 = map(key1, map(key2,value2)) のような 2 つのマップの長所 - 不要な参照変数はありません。短所 - 同じキーを2回保存すると、メモリが無駄になります。
カスタム オブジェクト値を持つ 1 つのマップを使用します。map1 = マップ customobj{float value1; string value2} 長所 - キーの重複はありません。cons- customobj の 99% は value2=null を持つため、参照ポインタのためにメモリを消費します。
基本的に私の最終的な質問は、未使用の参照 (customobj 内) がメモリを消費するのか、それともコンパイラが最適化するのかということです。同じkey1とkey2を2回保存してメモリを無駄にしたくないので、soln 2に傾いています。一方、value2=null の時間の 99% は、soln1 が優れているかどうか疑問に思います。
私はJavaを使用していますが、アドバイスを聞きたいです。
編集:私が投稿したマップ構造をSOが印刷しなかったことに気づかなかったので、編集しました。key1 と key2 の両方が文字列です (ほとんどの場合、固定長の ID 文字列)