在 Perl 中,如果我想要一个多层散列,我会写:
$hash_ref->{'key1'}->{'key2'}='value';
其中'key1'
可能是一个人的名字,'key2'
可能是“储蓄账户”(相对于“支票账户”),'value'
也可能是账户中的金额。
Java中是否有与此等效的方法,即通过哈希引用访问值?这个的语法是什么?任何示例或其他资源参考将不胜感激。谢谢!
在 Perl 中,如果我想要一个多层散列,我会写:
$hash_ref->{'key1'}->{'key2'}='value';
其中'key1'
可能是一个人的名字,'key2'
可能是“储蓄账户”(相对于“支票账户”),'value'
也可能是账户中的金额。
Java中是否有与此等效的方法,即通过哈希引用访问值?这个的语法是什么?任何示例或其他资源参考将不胜感激。谢谢!
在 Java 中,我们使用对象。我们将有一个Person
对象,其name
属性为 type String
, asavingsAccount
为 type Account
。该Account
对象将具有value
类型为 的属性BigDecimal
。
Java 是一种面向对象的语言。这不是 Perl。您应该在 Java 中使用 Java 惯用语,而不是 Perl 惯用语。
你可以有一个Map<Map<..>>
,在那里你可以打电话map.get("key1").get("key2")
但请注意,Java 是一种静态类型、面向对象的语言。所以你最好创建类:Person
,SavingsAccount
和 aPerson
有一个字段private SavingsAccount savingsAcount
。然后你就可以做一个编译时安全:map.get("John").getSavingsAccount()
您可以创建一个表示具有正确实现的键的类equals
和hashCode
方法:
我不确定为什么这个问题被否决了,但为了回答你的问题,在 Java 中你可以使用嵌套地图来实现同样的目的。
例如,您可以有一个
HashMap<String, HashMap<String, BigDecimal>>.
我不会称之为OOD,但你可以。
如果你有一个表示 Person 的类,一个表示 PersonalAccounts 的类,它具有 Account 实例作为属性,每个帐户类型一个(我假设这些会很少,否则列表会更好)它可能会更具可读性)。
然后单
HashMap<Person, PersonalAccounts>
足够了,如果你想使用 HashMap。
实际上,如果 PersonalAccounts 的实例是 Person 的属性,您甚至不需要映射。