在Perl中如果我想要一个多层哈希,我会写:
$hash_ref->{'key1'}->{'key2'}='value';
'key1'
可能是某个人的姓名,'key2'
可能是“储蓄帐户”(与“检查帐户”相比),'value'
可能是帐户中的金额。
Java中是否存在相同的内容,即通过哈希引用访问值?这个语法是什么样的?任何示例或其他资源参考将不胜感激。谢谢!
答案 0 :(得分:9)
在Java中,我们使用对象。我们会有一个Person
对象,name
属性类型为String
,savingsAccount
类型为Account
。此Account
对象将具有value
类型BigDecimal
的属性。
Java是一种OO语言。这不是Perl。你应该在Java中使用Java习语,而不是Perl习语。
答案 1 :(得分:5)
您可以拥有Map<Map<..>>
,您可以在其中拨打map.get("key1").get("key2")
但请注意,Java是一种静态类型的,面向对象的语言。因此,您最好创建课程:Person
,SavingsAccount
,Person
有一个字段private SavingsAccount savingsAcount
。然后,您将能够执行编译时安全:map.get("John").getSavingsAccount()
答案 2 :(得分:1)
您可以使用equals
和hashCode
方法正确实现来创建表示密钥的类:
答案 3 :(得分:1)
我不确定为什么这个问题被拒绝了,但回答你的问题,在Java中你可以使用嵌套的地图来实现同样的目标。
答案 4 :(得分:0)
例如,你可以有一个
HashMap<String, HashMap<String, BigDecimal>>.
我不会称之为OOD,但你可以。
如果你有一个代表Person的类,一个代表PersonalAccounts的类,它有一个Account实例作为属性,每个帐户类型一个(我假设那些很少,否则就是一个列表),这可能会更具可读性会更好)。
然后一个
HashMap<Person, PersonalAccounts>
如果你想使用HashMap,就足够了。
实际上,如果PersonalAccounts的实例是Person的属性,您甚至不需要地图。