Perl で多層ハッシュが必要な場合は、次のように記述します。
$hash_ref->{'key1'}->{'key2'}='value';
'key1'
人の名前、'key2'
「普通預金口座」(「当座預金口座」ではなく)、口座'value'
の金額などです。
Java でこれに相当するものはありますか?つまり、ハッシュ参照を介して値にアクセスしますか? これはどのような構文ですか?例やその他のリソースの参照は大歓迎です。ありがとう!
Perl で多層ハッシュが必要な場合は、次のように記述します。
$hash_ref->{'key1'}->{'key2'}='value';
'key1'
人の名前、'key2'
「普通預金口座」(「当座預金口座」ではなく)、口座'value'
の金額などです。
Java でこれに相当するものはありますか?つまり、ハッシュ参照を介して値にアクセスしますか? これはどのような構文ですか?例やその他のリソースの参照は大歓迎です。ありがとう!
Java では、オブジェクトを使用します。type のプロパティと typeのを持つPerson
オブジェクトがあります。このオブジェクトには、タイプのプロパティがあります。name
String
savingsAccount
Account
Account
value
BigDecimal
Java はオブジェクト指向言語です。パールではありません。Perl イディオムではなく、Java イディオムを Java で使用する必要があります。
あなたは、あなたがMap<Map<..>>
呼び出すことができる場所を持つことができますmap.get("key1").get("key2")
ただし、Java は静的型付けのオブジェクト指向言語であることに注意してください。したがって、クラスを作成したほうがよいでしょう: Person
、SavingsAccount
、および aPerson
にはフィールドがありますprivate SavingsAccount savingsAcount
。次に、コンパイル時のセーフを実行できるようになります。map.get("John").getSavingsAccount()
equals
およびhashCode
メソッドの適切な実装を使用して、キーを表すクラスを作成できます。
質問が反対票を投じられた理由はわかりませんが、質問に答えるために、Java ではネストされた Maps を使用して同じことを達成できます。
たとえば、
HashMap<String, HashMap<String, BigDecimal>>.
私はそれを OOD とは呼びませんが、できます。
Person を表すためのクラス、PersonalAccounts を表すためのクラスがあれば、おそらくもう少し読みやすくなるでしょう。このクラスには、アカウントの種類ごとに 1 つの Account インスタンスが属性として含まれます (それらは非常に少ないと思います。それ以外の場合は、リストの方が適切です)。 )。
それからシングル
HashMap<Person, PersonalAccounts>
HashMap を使用する場合は、これで十分です。
実際、PersonalAccounts のインスタンスが Person の属性である場合、マップは必要ありません。