Java中的多层哈希
在 Perl 中,如果我想要一个多层散列,我会写:
$hash_ref->{'key1'}->{'key2'}='value';
其中 'key1'
可能是一个人的名字,'key2'
可能是“储蓄帐户” (相对于“支票帐户”)和'value'
可能是帐户中的金额。
Java 中是否有与此等效的方法,即通过哈希引用访问值?这个的语法是什么样的?任何示例或其他资源参考将不胜感激。谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我不确定为什么这个问题被否决,但为了回答你的问题,在 Java 中你可以使用嵌套映射来实现相同的目的。
I am not sure why the question was down-voted but to answer your question, in Java you can use nested Maps to achieve the same.
例如,你可以有一个
我不会称之为 OOD,但你可以。
如果你有一个代表 Person 的类,一个代表 PersonalAccounts 的类,它具有 Account 实例作为属性,每个帐户类型都有一个(我假设这些会很少,否则列表会更好),那么它可能会更具可读性)。
那么单个
如果你想使用 HashMap,
就足够了。实际上,如果 PersonalAccounts 的实例是 Person 的属性,您甚至不需要映射。
For instance, you can have a
I would not call it OOD, but you can.
It would probably be a bit more readable if you had a class for representing Person, a class to represent PersonalAccounts, which has Account instances as attributes, one for each account type (I assume those would be very few, otherwise a list would be better).
Then a single
is enough, if you want to use an HashMap.
Actually you don't even need a map if an instance of PersonalAccounts is an attribute of a Person.
在Java中,我们使用对象。我们将有一个
Person
对象,其name
属性为String
类型,以及一个savingsAccount
类型为>帐户
。此Account
对象将具有一个BigDecimal
类型的value
属性。Java 是一种面向对象的语言。这不是珀尔。您应该在 Java 中使用 Java 习惯用法,而不是 Perl 习惯用法。
In Java, we use objects. We would have a
Person
object, with aname
property of typeString
, and asavingsAccount
of typeAccount
. ThisAccount
object would have avalue
property, of typeBigDecimal
.Java is an OO language. It's not Perl. You should use Java idioms in Java, and not Perl idioms.
您可以拥有一个
Map
,您可以在其中调用map.get("key1").get("key2")
code>但请注意,Java 是一种静态类型、面向对象的语言。因此,您最好创建类:
Person
、SavingsAccount
,并且Person
有一个字段private SavingsAccount savingAcount
。然后您就可以进行编译时安全操作:map.get("John").getSavingsAccount()
You can have a
Map<Map<..>>
, where you'll be able to callmap.get("key1").get("key2")
But note that Java is a statically-typed, object-oriented language. So you'd better creat classes:
Person
,SavingsAccount
, and aPerson
has a fieldprivate SavingsAccount savingsAcount
. Then you'll be able to do a compile-time safe:map.get("John").getSavingsAccount()
您可以创建一个表示键的类,并正确实现
equals
和hashCode
方法:You could create a class that represents the key with proper implementation for
equals
andhashCode
methods: