首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashMap的Java HashMap与String的HashMap

HashMap的Java HashMap与String的HashMap
EN

Stack Overflow用户
提问于 2012-02-15 11:40:47
回答 1查看 442关注 0票数 1

我是Java新手,目前正在用Java重写Perl代码。在Perl中,我有一个Hash of Hash,比如

代码语言:javascript
复制
$hashref->{index1}->{index2}->{index3} = $value;

在这里,我将index1、index2和index3与上述散列一起存储在3个不同的散列中。此外,Index1和index2是long类型,而index3是String类型。

现在我想用Java重写类似的东西。所以我想出了两种方法

代码语言:javascript
复制
1)HashMap<Long, HashMap<Long ,HashMap<String,String> >>
2)HashMap<String, String> //In this approach i concatenate index1,index2 and index3 using _ and make a single string

我想知道哪种方式是有效的,因为index1最多100键,index2最多300键,index3最多700键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-15 11:50:41

首先,让我们讨论#2

  • 如果索引字符串可以包含分隔符(“_”),则由于可能的歧义,它不会在100%的情况下工作:

例如,考虑3组索引:("12","13_13“和"14")和("12_13","13”和"14")。它们都产生了相同的连接键。

  • 它不允许直接处理2-d和3-d级别的散列,因为数据结构很容易被处理()。

例如,你不能很容易地做与"keys %{$hash->{index1}}“等价的Java --找到存储在index1下的二级散列的所有关键字。这是可行的,但难度更大。或"delete $hash->{index1}".

如果这两个考虑因素不会让你感到困扰,那么对1级HashMap使用一个连接的键是可以的。

如果他们这样做了,你需要做#1 -一个相当健壮的实现已经在SO上发布了:“Java equivalent of Perl's hash”。请注意,这样的实现不是微不足道的,因此连接1级索引的替代方法是一个非常好的替代方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9287549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档